⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tablero.java

📁 J2ME 技术开发的扑克牌类游戏 是开源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        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>");
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -