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

📄 tablecanvas.java

📁 一款麻将游戏的J2me源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

        case 8: // '\b'
            selfKong();
            break;
        }
    }

    public void selfKong()
    {
        m_btStatus = 5;
        m_aPlayers[currentPlayer()].doMelded(m_aPlayers[currentPlayer()].currentChance());
        
        boolean flag = m_aPlayers[currentPlayer()].pick(m_Wall.getKongTile());
        repaint();
        afterPicked(flag);
    }

    private void keyPressedProcessInHumanGotSelfKongChance(int i)
    {
        switch(getGameAction(i))
        {
        case 8: // '\b'
            m_Timer.cancel();
            discard();
            break;

        case 2: // '\002'
            m_Timer.cancel();
            m_aPlayers[currentPlayer()].leftDiscardPos();
            repaint();
            m_btStatus = 5;
            break;

        case 5: // '\005'
            m_Timer.cancel();
            m_aPlayers[currentPlayer()].rightDiscardPos();
            repaint();
            m_btStatus = 5;
            break;

        case 6: // '\006'
            m_Timer.cancel();
            m_btStatus = 5;
            break;

        case 1: // '\001'
            m_Timer.cancel();
            humanSelfKongChoice();
            break;
        }
    }

    private void humanSelfKongChoice()
    {
        m_btStatus = 15;
        repaint();
    }

    private void keyPressedProcessInShowPoint(int i)//在显示分数的时候按键处理
    {
    	        m_hImgPool =null;
        m_hImgPool= new Hashtable();  
        if(getGameAction(i) == 8)
            if(m_aPlayers[0].getPoint() > 0 && m_aPlayers[1].getPoint() > 0)
                restart();
            else
            {
                m_MJ13MIDlet.isgamerun = false;
            	m_MJ13MIDlet.splashEnded();
            }
    }

    private void keyPressedProcessInShowFanTile(int i)
    {
        if(getGameAction(i) == 8)
            showPoint();
    }

    private void showPoint()
    {
        m_btStatus = 13;
        m_aPlayers[m_btHou].calFanTileCount(m_Wall.getFanTiles(m_aPlayers[m_btHou].isTen()));
        if(m_btHou == currentPlayer())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].gotWindFan(m_Wall.getWind()))
            m_btFanCount++;
        if(m_aPlayers[m_btHou].gotChungFan())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].gotFaFan())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].gotBaiFan())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].isPinHou())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].isNo19())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].gotSameSequence())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].isConcealed())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].isTen())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].gotDragon())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].isNonPure19WithWord())
            m_btFanCount++;
        if(m_aPlayers[m_btHou].got3ConcealedTriple())
            m_btFanCount += 2;
        if(m_aPlayers[m_btHou].isPongPongHou())
            m_btFanCount += 3;
        if(m_aPlayers[m_btHou].isSmall3Yuan())
            m_btFanCount += 3;
        if(m_aPlayers[m_btHou].is7Pairs())
            m_btFanCount += 2;
        if(m_aPlayers[m_btHou].isUnpureSameSuit())
            m_btFanCount += 3;
        if(m_aPlayers[m_btHou].isPure19())
            m_btFanCount += 3;
        if(m_aPlayers[m_btHou].isSameSuit())
            m_btFanCount += 6;
        if(m_aPlayers[m_btHou].isBig3Yuan())
            m_btFanCount += 6;
        repaint();
    }

    private void keyPressedProcessInHumanGotSelfHouChance(int i)
    {
        switch(getGameAction(i))
        {
        case 8: // '\b'
            m_Timer.cancel();
            selfHou();
            break;
        }
    }

    public void selfHou()
    {
    	try
    	{
        m_btStatus = 11;
        m_btHou = currentPlayer();
       
        repaint();
        m_Timer = new Timer();
        Thread.sleep(450L);
        (new TableTask(this,(byte)12)).start();
        //m_Timer.schedule(new TableTask(this, (byte)12), 450L);
   		}
   		catch(Exception e)
   		{
   		}
    }

    private void keyPressedProcessInDraw(int i)
    {
        if(getGameAction(i) == 8)
            restart();
    }

    private void restart()
    {
    	try
    	{
        if(m_btStatus != 10 && !m_aPlayers[m_btHou].isBanker())
        {
            m_aPlayers = (new myPlayer[] {
                m_aPlayers[m_btHou], m_aPlayers[(m_btHou + 1) % 2]
            });
            m_aPlayers[0].setBanker(true);
            m_aPlayers[1].setBanker(false);
            m_RichRMS.put("BANKER", m_aPlayers[0].isHuman() ? "HUMAN" : "HANDHELD");
            m_RichRMS.save();
            if(m_aPlayers[0].isHuman())
            {
                m_Wall.nextWind();
                m_RichRMS.put("WIND", "" + m_Wall.getWind());
                m_RichRMS.save();
            }
        }
        m_btStatus = 1;
        for(byte byte0 = 0; byte0 < m_aPlayers.length; byte0++)
            m_aPlayers[byte0].reset();

        m_Wall.shuffle();
        m_btTurn = -1;
        m_btFanCount = 0;
        m_Timer = new Timer();
        Thread.sleep(450L);
        (new TableTask(this,(byte)1)).start();        
        //m_Timer.schedule(new TableTask(this, (byte)1), 450L);
      }
      catch(Exception e)
      {
      }
    }

    private void keyPressedProcessInPick(int i)
    {
        switch(getGameAction(i))
        {
        case 3: // '\003'
        case 4: // '\004'
        case 7: // '\007'
        default:
            break;

        case 5: // '\005'
            m_aPlayers[currentPlayer()].rightDiscardPos();
            repaint();
            break;

        case 2: // '\002'
            m_aPlayers[currentPlayer()].leftDiscardPos();
            repaint();
            break;

        case 1: // '\001'
            if(m_aPlayers[currentPlayer()].isConcealed())
                issueTen();
            break;

        case 6: // '\006'
            if(m_aPlayers[currentPlayer()].isTenIssued())
            {
                m_btStatus = 5;
                m_aPlayers[currentPlayer()].cancelIssuedTen();
                repaint();
            }
            break;

        case 8: // '\b'
            discard();
            break;
        }
    }

    public void issueTen()
    {
        m_btStatus = 9;
        m_aPlayers[currentPlayer()].issueTen();
        repaint();
    }

    public void flashHint()
    {
        m_btHint = (byte)(++m_btHint % 2);
    }

    public void pick()
    {
        m_btStatus = 5;
        boolean flag = m_aPlayers[++m_btTurn % 2].pick(m_Wall.nextTile());
        repaint();
        afterPicked(flag);
    }

    private void afterPicked(boolean flag)
    {
    	try
    	{
        if(flag)//能和牌
        {
            gotSelfHouChance();
        }
        else
        if(m_aPlayers[currentPlayer()].isTen())
        {
            m_Timer = new Timer();
        Thread.sleep(450L);
        (new TableTask(this,(byte)7)).start();            
            //m_Timer.schedule(new TableTask(this, (byte)7), 450L);
        } else
        {
            checkSelfKongChance();
        }
      }
      catch(Exception e)
      {
      }
    }

    private void checkSelfKongChance()//检测有没有可碰吃的
    {
        if(m_aPlayers[currentPlayer()].gotSelfKongChance() && m_Wall.getKongCount() != 4)
            gotSelfKongChance();
        else
        if(!m_aPlayers[currentPlayer()].isHuman())
            handheldDiscard();
    }

    private void handheldDiscard()
    {

⌨️ 快捷键说明

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