实践作业3 结对项目

 

一.实验项目

五子棋

二.GITHUB地址https://github.com/wangyong2986/test/blob/master/%E4%BA%94%E5%AD%90%E6%A3%8B

   结对人:杜鹏程

三.实验代码

 

package com.Javaa;

import java.awt.Color;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Panel;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.WindowEvent;

import java.awt.event.WindowListener;

 

import javax.swing.JOptionPane;

 

public class Ha

{

    public static void main(String argc [])

    {

        myframe f = new myframe();

    }

}

class mypanel extends Panel implements MouseListener

{

    int chess[][] = new int[11][11];//构造11*11个方格的棋盘

    boolean Is_Black_True;

    mypanel()

    {

        Is_Black_True = true;

        for(int i = 0;i < 11;i++)

        {

            for(int j = 0;j < 11;j++)

            {

                chess[i][j] = 0;

            }

        }

        addMouseListener(this);

        setBackground(Color.BLUE);

        setBounds(0, 0, 360, 360);

        setVisible(true);

    }

    public void mousePressed(MouseEvent e)

    {

        int x = e.getX();

 int y = e.getY();

 

 if(x < 25 || x > 330 + 25 ||y < 25 || y > 330+25)

        {

  return;

        }

 if(chess[x/30-1][y/30-1] != 0)

        {

  return;

        }

        if(Is_Black_True == true)

        {

            chess[x/30-1][y/30-1] = 1;

            Is_Black_True = false;

            repaint();

            Justisewiner();

            return;

        }

        if(Is_Black_True == false)

        {

            chess[x/30-1][y/30-1] = 2;

            Is_Black_True = true;

            repaint();

            Justisewiner();

            return;

        }

    }

    void Drawline(Graphics g)

    {

 for(int i = 30;i <= 330;i += 30)

 {

            for(int j = 30;j <= 330; j+= 30)

            {

                g.setColor(Color.WHITE);

                g.drawLine(i, j, i, 330);

            }

 }

 

 for(int j = 30;j <= 330;j += 30)

 {

            g.setColor(Color.WHITE);

            g.drawLine(30, j, 330, j);

 }

       

    }

    void Drawchess(Graphics g)

    {

        for(int i = 0;i < 11;i++)

 {

            for(int j = 0;j < 11;j++)

            {

                if(chess[i][j] == 1)

                {

                    g.setColor(Color.BLACK);

                    g.fillOval((i + 1) * 30 - 8, (j + 1) * 30 - 8, 16, 16);

                }

                if(chess[i][j] == 2)

                {

                    g.setColor(Color.WHITE);

                    g.fillOval((i + 1) * 30 - 8, (j + 1) * 30 - 8, 16, 16);

                }

            }

 }

    }

    void Justisewiner()

    {

        int black_count = 0;

 int white_count = 0;

        int i = 0;

       

 for(i = 0;i < 11;i++)//横向判断

 {

            for(int j = 0;j < 11;j++)

            {

                if(chess[i][j] == 1)

                {

                    black_count++;

                    if(black_count == 5)

                    {

                        JOptionPane.showMessageDialog(this, "黑棋胜利");

                        Clear_Chess();

                        return;

                    }

                }

                else

                {

                    black_count = 0;

                }

                if(chess[i][j] == 2)

                {

                    white_count++;

                    if(white_count == 5)

                    {

                        JOptionPane.showMessageDialog(this, "白棋胜利");

                        Clear_Chess();

                        return;

                    }

                }

                else

                {

                    white_count = 0;

                }

            }

 }

 

 for(i = 0;i < 11;i++)//竖向判断

 {

            for(int j = 0;j < 11;j++)

            {

                if(chess[j][i] == 1)

                {

                    black_count++;

                    if(black_count == 5)

                    {

                        JOptionPane.showMessageDialog(this, "黑棋胜利");

                        Clear_Chess();

                        return;

                    }

                }

                else

                {

                    black_count = 0;

                }

                if(chess[j][i] == 2)

                {

                    white_count++;

                    if(white_count == 5)

                    {

                        JOptionPane.showMessageDialog(this, "白棋胜利");

                        Clear_Chess();

                        return;

                    }

                }

                else

                {

                    white_count = 0;

                }

            }

 }

 

 

 for(i = 0;i < 7;i++)//左向右斜判断

 {

            for(int j = 0;j < 7;j++)

            {

                for(int k = 0;k < 5;k++)

                {

                    if(chess[i + k][j + k] == 1)

                    {

                        black_count++;

                        if(black_count == 5)

                        {

                            JOptionPane.showMessageDialog(this, "黑棋胜利");

                            Clear_Chess();

                            return;

                        }

                    }

                    else

                    {

                        black_count = 0;

                    }

                    if(chess[i + k][j + k] == 2)

                    {

                        white_count++;

                        if(white_count == 5)

                        {

                            JOptionPane.showMessageDialog(this, "白棋胜利");

                            Clear_Chess();

                            return;

                        }

                    }

                    else

                    {

                        white_count = 0;

                    }

                }

            }

 }

 

 for(i = 4;i < 11;i++)//右向左斜判断

 {

            for(int j = 6;j >= 0;j--)

            {

                for(int k = 0;k < 5;k++)

                {

                    if(chess[i - k][j + k] == 1)

                    {

                        black_count++;

                        if(black_count == 5)

                        {

                            JOptionPane.showMessageDialog(this, "黑棋胜利");

                            Clear_Chess();

                            return;

                        }

                    }

                    else

                    {

                        black_count = 0;

                    }

                    if(chess[i - k][j + k] == 2)

                    {

                        white_count++;

                        if(white_count == 5)

                        {

                            JOptionPane.showMessageDialog(this, "白棋胜利");

                            Clear_Chess();

                            return;

                        }

                    }

                    else

                    {

                        white_count = 0;

                    }

                }

            }

 }

      

    }

    void Clear_Chess()

    {

 for(int i=0;i<11;i++)

 {

  for(int j=0;j<11;j++)

  {

   chess[i][j]=0;

  }

 }

 repaint();

    }

    public void paint(Graphics g)

    {

        Drawline(g);

        Drawchess(g);

    }

    public void mouseExited(MouseEvent e){}

    public void mouseEntered(MouseEvent e){}

    public void mouseReleased(MouseEvent e){}

    public void mouseClicked(MouseEvent e){}

   

}

 

 

class myframe extends Frame implements WindowListener

{

    mypanel panel;

    myframe()

    {

        setLayout(null);

        panel = new mypanel();

        add(panel);

        panel.setBounds(0,23, 360, 360);

        setTitle("单人版五子棋");

        setBounds(200, 200, 360, 383);

        setVisible(true);

        addWindowListener(this);

       

    }

    public void windowClosing(WindowEvent e)

    {

        System.exit(0);

    }

    public void windowDeactivated(WindowEvent e){}

    public void windowActivated(WindowEvent e){}

    public void windowOpened(WindowEvent e){}

    public void windowClosed(WindowEvent e){}

    public void windowIconified(WindowEvent e){}

    public void windowDeiconified(WindowEvent e){}

}

 

四.实验截图


 

posted on 2015-05-16 20:48  大漠孤烟2986  阅读(137)  评论(8编辑  收藏  举报

导航