纪念下我的第一个Java程序-五子棋1.0

五子棋1.0

只能进行一次游戏,之后的游戏棋子还在 

感谢之前搜到的某位大佬的代码

package test;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class MyJpanel extends JFrame{
		PicJpanel pj;
		int map[][]=new int [16][16];
		int flag = 2;
		int winer = 0;
		
		public int[][] getMap() {
				return map;
		}
		
		public void setMap(int[][] map) {
				this.map = map;
		}
	
		public MyJpanel() {
				init();
		}
	
		private void init() {
			
				this.setSize(750, 780);
				this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
				this.setLocationRelativeTo(null);
				this.setResizable(false);
				this.setLayout(null);
				this.setTitle("五子棋");
		
				pj = new PicJpanel(this);
				pj.addMouseListener(new MyMouse(this));
				this.add(pj);
		
				this.setVisible(true);
		}
	
		public static void main(String[] args) {
				new MyJpanel();
		}
	
}

class PicJpanel extends JPanel{
		MyJpanel mj;
		
		public PicJpanel (MyJpanel mj) {
			
				this.setBounds(0, 0, mj.getWidth(), mj.getHeight());
				this.mj = mj;
		}
		
		protected void paintComponent(Graphics G) {
				try {
						BufferedImage bi = ImageIO.read(new File(" "));
						G.drawImage(bi, 0, 0, this);
				} catch (IOException e) {
					e.printStackTrace();
				}
				
				int map[][] = mj.map;
				
				G.setColor(Color.BLACK);
				
				for(int i = 0; i < 15; i++) {
						for(int j = 0; j < 15; j++) {
							G.drawRect(50 * i, 50 * j, 50, 50);
							
							if (map[i][j] == 1) {
									G.setColor(Color.white);
									G.fillOval(50 * j, 50 * i, 50, 50);
							}
							G.setColor(Color.BLACK);
							
							if (map[i][j] == 2) {
									G.setColor(Color.black);
									G.fillOval(50 * j, 50 * i, 50, 50);
							}
						}
				}	
		}
		
}

class MyMouse extends MouseAdapter{
		MyJpanel mj;
		
		public MyMouse (MyJpanel mj) {
				super();
				this.mj = mj;
		}
		
		public void mousePressed(MouseEvent e) {
				
				if (mj.winer != 0) {
					mj.setMap(new int[16][16]);
					mj.winer = 0;
					mj.pj.repaint();
					return ;
					
				}
				int map[][] = mj.map;
				Point p = e.getPoint();
				
				int x = (int) p.getX() / (750 / 15 );
				int y = (int) p.getY() / (750 / 15 );
				System.out.println("x=" + p.getX() + "   y=" + p.getY());
				System.out.println("x=" + x + "   y=" + y);
				
				if (map[y][x] == 0) {
						map[y][x] = mj.flag;
				}
				
				if (mj.flag == 1) {
						mj.flag = 2;
				}else if (mj.flag == 2) {
						mj.flag = 1;
				}
				
				MyMouse mouse = new MyMouse(mj);
				if (mouse.isWin(y, x, map)) {
					if (map[y][x] == 1) {
								mj.winer = 1;
								mj.pj.repaint();
							
								JOptionPane.showMessageDialog(null, "白子胜");
							
								mj.flag = 2;
								return;
					}
					
					if (map[y][x] == 2) {
								mj.winer = 2;
								mj.pj.repaint();
							
								JOptionPane.showMessageDialog(null,"黑子胜");
							
								mj.flag = 2;
								return;
							
					}
				}
				
				mj.setMap(map);
				mj.pj.repaint();
				
		}
		
		public boolean isWin(int x, int y, int [][]map) {
			
			int num = 1;
			for (int i = 0; i < 14; i++) {
				if (map[x][i] != 0) {
					if (map[x][i] == map[x][i + 1]) {
						num++;
						if (num >= 5) {
							return true;
						}
					} else {
						num = 1;
					}
				}
			}
	 
			
			num = 1;
			for (int i = 0; i < 14; i++) {
				if (map[i][y] != 0) {
					if (map[i][y] == map[i + 1][y]) {
						num++;
						if (num >= 5) {
							return true;
						}
					} else {
						num = 1;
					}
				}
			}
	 
			num=1;
			
			for (int i = 0; i < map.length*2-1; i++) {
				for (int j = 1; j < map.length ; j++) {
					if (((i - j) >= 0) && ((i - j) < map.length)) {
						if(map[j][i-j] != 0){
							if(map[j][i-j] == map[j-1][i-j+1]){
								num++;
								if (num >= 5) {
									return true;
								}
							}else{
								num=1;
							}
						}
					}
				}
			}
			
			num=1;

			for (int i = -map.length; i < map.length; i++) {
				for (int j = 1; j < map.length; j++) {
					if(((i+j) >= 0)&&((i+j) < map.length)){
						if(map[j][j+i] != 0){
							if(map[j][i+j] == map[j+1][i+j+1]){
								num++;
								if (num >= 5) {
									return true;
								}
							}else{
								num=1;
							}
						}
					}
				}
			}
			
			return false;
		
		}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值