?? tablero.java
字號(hào):
this.partida=partida;
//setFullScreenMode(true);
altoCelda=getAltoCelda()+1;
alto=getHeight();
ancho=getWidth();
jugadores=partida.getNJugadores();
// A?adimos el comando Salir e indicamos que clase lo manejar?
/*exitCommand = new Command("Salir", Command.EXIT,2);
this.addCommand(exitCommand);
graficoCommand=new Command("Grafico",Command.SCREEN, 1);
this.addCommand(graficoCommand);
*/
this.setCommandListener(cl);
//this.setTitle("Micro Pocha v0.9");
}
/** crea un tablero y lo inicializa con una secuencia xml
* @param partida datos de la partida que va a reflejar
* @param cl comandos comunes
* @param xml secuencia xml con los datos. Posicion de cursor, etc..
*/
public Tablero(Partida partida,CommandListener c1,java.io.Reader xml, XmlPullParser analizador)
{
this(partida,c1);
int tag;
String snum;
int num;
try
{
//mano
tag=analizador.nextTag();
tag=analizador.nextToken();
snum=analizador.getText();
try
{
num=Integer.parseInt(snum);
this.mano=num;
}
catch (Exception ex)
{}
tag=analizador.nextTag();
//cursorx
tag=analizador.nextTag();
tag=analizador.nextToken();
snum=analizador.getText();
try
{
num=Integer.parseInt(snum);
this.sx=num;
}
catch (Exception ex)
{}
tag=analizador.nextTag();
//cursorx
tag=analizador.nextTag();
tag=analizador.nextToken();
snum=analizador.getText();
try
{
num=Integer.parseInt(snum);
this.sy=num;
}
catch (Exception ex)
{}
tag=analizador.nextTag();
//mano
tag=analizador.nextTag();
tag=analizador.nextToken();
snum=analizador.getText();
try
{
num=Integer.parseInt(snum);
this.vScroll=num;
}
catch (Exception ex)
{}
tag=analizador.nextTag();
//fin
tag=analizador.nextTag();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void keyPressed(int keyCode)
{
int action=0;
switch (keyCode)
{
case KEY_NUM0:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), -5);
this.repaint();
break;
case KEY_NUM1:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 10);
this.repaint();
break;
case KEY_NUM2:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 20);
this.repaint();
break;
case KEY_NUM3:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 30);
this.repaint();
break;
case KEY_NUM4:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 40);
this.repaint();
break;
case KEY_NUM5:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 50);
this.repaint();
break;
case KEY_NUM6:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 60);
this.repaint();
break;
case KEY_NUM7:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 70);
this.repaint();
break;
case KEY_NUM8:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 80);
this.repaint();
break;
case KEY_NUM9:
partida.setParcial(getJugadorSeleccionado(), getRondaSeleccionada(), 90);
this.repaint();
break;
case KEY_POUND://#
mano++;
this.repaint();
break;
case KEY_STAR://*
break;
default:
action=getGameAction(keyCode);
break;
}
switch(action)
{
case 0:
//ya ha sido procesado como tecla num?rica
break;
case FIRE:
// Disparar
break;
case LEFT:
if (sx==1)
{
sx=jugadores;
if (sy==1)
vScroll=(vScroll>0?vScroll-1:0);
else
--sy;
}
else
sx--;
this.repaint();
break;
case RIGHT:
if (sx==jugadores)
{
sx=1;
int maximo=(new Cell(null, 1, 1, jugadores, borde)).getMaxFilas();
if (sy==maximo)
vScroll++;
else
sy++;
try
{
MicroPocha.getAlmacen().guardar();
} catch (IOException ex)
{
ex.printStackTrace();
}
}
else sx++;
this.repaint();
break;
case UP:
partida.inc(getJugadorSeleccionado(), getRondaSeleccionada());
this.repaint();
break;
case DOWN:
partida.dec(getJugadorSeleccionado(),getRondaSeleccionada());
this.repaint();
break;
}
}
/**
* reinicializa la posicion del scroll y del cursor
*/
public void reiniciar()
{
sx=1;
sy=1;
vScroll=0;
mano=0;
}
protected int getRondaSeleccionada()
{
return sy+vScroll;
}
protected int getJugadorSeleccionado()
{
return sx;
}
private void seleccion(Graphics g,int jugadores,boolean borde)
{
(new Cell(g,sx,sy,jugadores,true)).setBorde(128, 255, 128);
(new Cell(g,sx,sy,jugadores,true)).setRelleno(232, 255, 232);
}
/**
* determina si un jugador es mano en una ronda
* lease cuidadosamente la info de parametros, tanto jugador como ronda
* son ordinales, un valor nulo puede causar errores de divisi?n por 0
*
* En el c?lculo interviene el valor mano, si es 0 (o multiplo de jugadores)
* se entiende que nadie es mano y siempre dar? falso
*
* @param jugador numero de jugador (ordinal) de 1 a Jugadores
* @param ronda numero de ronda (ordinal) de 1 a nRondas
* @return true si es mano ese jugador en esa ronda.
*/
private boolean isMano(int jugador,int ronda)
{
int mano=this.mano%(this.jugadores+1);
if (mano==0)
return false;
else
{
//(ronda-1)%jugadores==(jugador-mano)%jugadores
return (ronda+jugadores-1)%jugadores==(jugador+jugadores-mano)%jugadores;
}
}
/**
* Serializa los datos de la partida en formato xml
* @param destino buffer donde escribe el resultado.
*/
public void toXml(StringBuffer destino)
{
destino.append(" <pantalla> ");
destino.append(" <mano>");
destino.append(mano);
destino.append("</mano>");
destino.append(" <cursorx>");
destino.append(sx);
destino.append("</cursorx>");
destino.append(" <cursory>");
destino.append(sy);
destino.append("</cursory>");
destino.append(" <scroll>");
destino.append(vScroll);
destino.append("</scroll>");
destino.append("</pantalla>");
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -