JAVA五子棋小游戏

 

学完Java基础书时总想着要自己编写出小游戏,事情并非如自己所愿,每次鼓起勇气来编写时,总是不知道该怎么写,写到一半就开始放弃。因为自己习惯跟着视屏去看和编写,思路和方法都是老师教,自己根本无法去考虑那么的多,所以一直写不出属于自己的东西。今天通过这篇文章来分享一下Java五子棋的编写思路。

需要知道五子棋的简单内容,如有棋盘、棋子、输赢规则等需要实现。

为了一步一步讲解,下面的代码将会进行拆分,方便讲解。    完整代码将会在最下方。

1.那么我们先来简单的实现一个五子棋的棋盘布局。

package 模拟练习.五子棋;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;

public class FI extends JFrame {
		//设置游戏界面
		/*	屏幕分辨率求法:
				int w = f.getToolkit().getScreenSize().width;//宽度
				int h = f.getToolkit().getScreenSize().height;//高度
		Toolkit.getDefaultToolkit().getScreenSize().width   与上面等同
		都是用来获取屏幕的宽高,
		this.setLocation((width - 500) / 2 , (height - 500) / 2 );
		这是使你的窗口能够居中显示,这样看起来美观。
	*/
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;	
		int[][] allChess = new int[15][15];   // 用数组来保存棋子,0表示无子,1表示黑子,2表示白子
		boolean isblack = true;   //用来表示黑子还是白子, true表示黑子   false表示白子
		boolean canPlay = true;   // 用来表示当前游戏是否结束
		String message = "黑方先行";
		String blackMessage = "无限制";
		String whiteMessage = "无限制";	
		public FI(){
			this.setTitle("五子棋1.0");
			this.setSize(500,500);
			this.setLocation((width - 500) / 2 , (height - 500) / 2 );
			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.setResizable(false);  //设置窗口不可改变,固定窗口大小
			this.setVisible(true);			
			this.repaint();  //java里repaint()是重绘component的方法;	
                            //它会直接调用下面的方法对界面进行重行绘画				
		}

		//画棋盘界面
		public void paint(Graphics g){
			//双缓冲技术
			BufferedImage buf = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
        // 这个bufferedImage 可以在网上查找相关用法,它是对图像的一种处理。
			Graphics g1 =  buf.createGraphics();  // 创建画笔
			g1.setColor(new Color(0,169,158));
			g1.fill3DRect(43, 60, 375, 375, true);
			
				for (int i = 0; i <= 15; i++) {
					g1.setColor(Color.WHITE);
					g1.drawLine(43, 60+i*25, 375+43, 60+i*25);  //画棋盘横线
					g1.drawLine(43+i*25, 60, 43+i*25, 375+60);  //画棋盘竖线
				}
				
				g1.setFont(new Font("黑体",Font.BOLD,20));
				g1.drawString("游戏信息:"+message,50,50);
				
				g1.drawRect(30, 440, 180, 40);
				g1.drawRect(250, 440, 180, 40);   //画黑方时间与白方时间字符串的边框
				g1.setFont(new Font("宋体",0,12));
				
				    g1.drawString("黑方时间: "+blackMessage,40,465);
			        g1.drawString("白方时间: "+whiteMessage,260,465);
			         
			        g1.drawRect(430,66,55,20);
			        g1.drawString("重新开始",432,80); //重新开始按钮
			         
			        g1.drawRect(430,106,55,20);
			        g1.drawString("游戏设置",432,120); //游戏设置按钮
			         
			        g1.drawRect(430,146, 55, 20);
			        g1.drawString("游戏说明", 432, 160); // 游戏说明按钮
			  
			        g1.drawRect(430, 186, 55, 20);
			        g1.drawString("退出游戏", 432, 200);  // 退出游戏按钮
			  
			        g1.drawRect(430, 246, 55, 20);
			        g1.drawString("悔棋", 442, 260);  // 悔棋
			  
			        g1.drawRect(430, 286, 55, 20);
			        g1.drawString("认输", 442, 300);  // 认输			
				
				 g.drawImage(buf, 0, 0,this);	
		}
		
	public static void main(String[] args) {
		new FI();
	}
}

 这里就简单的实现的窗口和棋盘的布局。(以上实现方法可以用另一种方法进行实现,不用一个一个的画出来,2.0的版本会进行更新   )

效果图      :五子棋

 2.接下来就开始实现下棋功能,既然要下棋那就要画出棋子。

	     for(int i=0; i<15; i++){
				for (int j = 0; j < 15; j++) {
					//画实心黑子
					if(allChess[i][j] == 1){    
						int tempX = i*25+47;
						int tempY = j*25+64;
						g1.setColor(Color.BLACK);
						g1.fillOval(tempX, tempY, 16, 16);
						g1.setColor(Color.BLACK);
						g1.drawOval(tempX, tempY, 16, 16);
					}
					
					//画实心白子
			
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值