java五子棋小程序源代码_用Java编写的五子棋小程序

本文介绍了一个使用Java编写的五子棋小程序,包括棋盘绘制、落子逻辑、游戏胜负判断等功能。用户可以选择黑白棋的先后顺序,并在游戏结束后可以重置游戏。
摘要由CSDN通过智能技术生成

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import java.applet.Applet;

import java.awt.Color;

public class wu7ziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener

{

int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子

int intGame_Start=0;//游戏开始标志 0未开始 1游戏中

int intGame_Body[][]=new int[16][16];  //设置棋盘棋子状态 0 无子 1 白子 2 黑子

Button b1=new Button("游戏开始");

Button b2=new Button("重置游戏");

Label lblWin=new Label(" ");

Checkbox ckbHB[]=new Checkbox[2];

CheckboxGroup ckgHB=new CheckboxGroup();

public void init()

{

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=new Checkbox("白子先",ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=new Checkbox("黑子先",ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

add(ckbHB[0]);

add(ckbHB[1]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,130,80,30);

Game_start_csh();

}

public void itemStateChanged(ItemEvent e)

{

if (ckbHB[0].getState())  //选择黑子先还是白子先

{

color_Qizi=0;

}

else

{

color_Qizi=1;

}

}

public void actionPerformed(ActionEvent e)

{

Graphics g=getGraphics();

if (e.getSource()==b1)

{

Game_start();

}

else

{

Game_re();

}

}

public void mousePressed(MouseEvent e){}

public void mouseClicked(MouseEvent e)

{

Graphics g=getGraphics();

int x1,y1;

x1=e.getX();

y1=e.getY();

if (e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300)

{

return;

}

if (x1%20>10)

{

x1+=20;

}

if(y1%20>10)

{

y1+=20;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

public void mouseDragged(MouseEvent e){}

public void mouseMoved(MouseEvent e){}

public void paint(Graphics g)

{

draw_qipan(g);

}

public void set_Qizi(int x,int y)  //落子

{

if (intGame_Start==0) //判断游戏未开始

{

return;

}

if (intGame_Body[x/20][y/20]!=0)

{

return;

}

Graphics g=getGraphics();

if (color_Qizi==1)//判断黑子还是白子

{

g.setColor(Color.black);

color_Qizi=0;

}

else

{

g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;

if (Game_win_1(x/20,y/20))  //判断输赢

{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

if (Game_win_2(x/20,y/20))  //判断输赢

{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

if (Game_win_3(x/20,y/20))  //判断输赢

{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

if (Game_win_4(x/20,y/20))  //判断输赢

{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");

intGame_Start=0;

}

}

public String Get_qizi_color(int x)

{

if (x==0)

{

return "黑子";

}

else

{

return "白子";

}

}

public void draw_qipan(Graphics G)  //画棋盘 15*15

{

G.setColor(Color.lightGray);

G.fill3DRect(10,10,300,300,true);

G.setColor(Color.black);

for(int i=1;i<16;i++)

{

G.drawLine(20,20*i,300,20*i);

G.drawLine(20*i,20,20*i,300);

}

}

public void Game_start() //游戏开始

{

intGame_Start=1;

Game_btn_enable(false);

b2.setEnabled(true);

}

public void Game_start_csh() //游戏开始初始化

{

intGame_Start=0;

Game_btn_enable(true);

b2.setEnabled(false);

ckbHB[0].setState(true);

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

{

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

{

intGame_Body[i][j]=0;

}

}

lblWin.setText("");

}

public void Game_re() //游戏重新开始

{

repaint();

Game_start_csh();

}

public void Game_btn_enable(boolean e)  //设置组件状态

{

b1.setEnabled(e);

b2.setEnabled(e);

ckbHB[0].setEnabled(e);

ckbHB[1].setEnabled(e);

}

public boolean Game_win_1(int x,int y)  //判断输赢 横

{

int x1,y1,t=1;

x1=x;

y1=y;

for (int i=1;i<5 ;i++ )

{

if (x1>15)

{

break;

}

if (intGame_Body[x1+i][y1]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i<5 ;i++ )

{

if (x1<1)

{

break;

}

if(intGame_Body[x1-i][y1]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)

{

return true;

}

else

{

return false;

}

}

public boolean Game_win_2(int x,int y)  //判断输赢 竖

{

int x1,y1,t=1;

x1=x;

y1=y;

for (int i=1;i<5 ;i++ )

{

if (x1>15)

{

break;

}

if (intGame_Body[x1][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i<5 ;i++ )

{

if (x1<1)

{

break;

}

if(intGame_Body[x1][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)

{

return true;

}

else

{

return false;

}

}

public boolean Game_win_3(int x,int y)  //判断输赢 左斜

{

int x1,y1,t=1;

x1=x;

y1=y;

for (int i=1;i<5 ;i++ )

{

if (x1>15)

{

break;

}

if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i<5 ;i++ )

{

if (x1<1)

{

break;

}

if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)

{

return true;

}

else

{

return false;

}

}

public boolean Game_win_4(int x,int y)  //判断输赢 左斜

{

int x1,y1,t=1;

x1=x;

y1=y;

for (int i=1;i<5 ;i++ )

{

if (x1>15)

{

break;

}

if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i<5 ;i++ )

{

if (x1<1)

{

break;

}

if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t>4)  {   return true;  }  else  {   return false;  } }}

晓庄学院 《JAVA程序设计》课程设计报告 "题 目: " 五子棋游戏的设计与实现 " "姓 名: "野 " "学 号: "12130818 " "班 级: "12软件工程转本2班 " "指导教师: "王峥 " "完成时间 "7月1日 " "成 绩: " " 信息工程学院 2015年6月 目录 1引言1 1.1系统开发背景2 1.1系统开发的目的和意义3 1.2完成的主要工作4 2需求分析和总体设计4 2.1需求分析与设计思路5 2.1.1关键技术说明5 2.1.2需求分析5 2.1.3系统设计方案与思路5 2.1.4系统目录结构说明5 2.2系统功能结构6 3详细设计7 3.1系统模块实现9 4系统运行结果10 5课程设计总结12 五子棋游戏的设计与实现 引言 五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在"尧 造围棋"之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之 处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有"女娲造人 ,伏羲做棋"一说,《增山海经》中记载:"休舆之山有石焉,名曰帝台之棋,五色而文 状鹑卵。"善注引三国淳《艺经》中曰:"棋局,纵横各十七道,合二百八十九道,白黑 棋子,各一百五十枚"。这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头 为棋子。因而规则简单的五子棋也可能出自当时,并是用石子作棋子。亦有传说,五 子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子后代中遍及开来。 1 系统开发背景 在计算机逐步渗入社会生活各个层面的今天,计算机已经成为了人们日常生活中 的一部分,越来越多的人使用计算机办公、娱乐等等。在这其中,系统自带的小游戏 也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等 特点,非常适合人们在完成工作的时候适当的娱乐要求。这些小游戏大都是以益智和 娱乐为目的,不仅给紧工作的人们以放松,还可以让人们的大脑得到开发。 2 完成的主要工作 设计一个15 15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择黑子先下 2.设置双方下棋总共时长 3.刷新重新开始 4.悔棋 5.认输 6.退出提示 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 1.3需求分析与设计思路 1. 用户需求调查分析 2. 构思代码模块 3. 总体设计 4. 详细设计 5. 代码编写 2需求分析和总体设计 1. 2. 4 需求分析与设计思路 此系统为智力游戏,采用JAVA的MVC模式,根据不同功能划分不同模块,该五子棋 游戏功能虽然简单,然是实现了人机对战,所以从这个角度来说,此款游戏能准确的 计算棋局。虽然系统不大,但是可以实现基本的五子棋功能,以及悔棋。 2.1.2需求分析 五子棋,是一种两人对弈的纯策略型棋类游戏,亦称"串珠"、"连五子";是中国 民间非常熟知的一个古老棋种。相传,它起源于四千多年前的尧帝时期,比围棋的历 史还要悠久。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在 炎黄子后代中遍及开来。 五子棋发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜; 不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 2.1.3设计方案与思路 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为15X15,棋子放置于棋 盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以 上同色棋子连成不间断的一排者为胜。因为传统五子棋在落子后不能移动或拿掉,所 以也可以用纸和笔来进行游戏。 2.1.4系统目录结构说明 对系统包结构、文件结构列表说明,如表2-1、2-2所示。 表2-1主页面表 "包名 "作用 " "src "容纳所有文件 " 表2-2文件表 "文件名 "作用 " "Game.java "运行文件 " "GameFrame.java " " "Cheerup.java " " "PaintPanel.java " " 5 系统功能结构 3.1详细设计 1. 系统模块实现 "按钮 "事件 " "悔棋事件 "class Back implements ActionListener " "认输事件 "class Fail extends JFrame implementsActionListener" "关于事件 "class About extends JFrame implements " " "ActionListener " "设置事件 "class Set implements ActionListener " "退出事件 "classExite
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值