五子棋课设文档格式.docx
- 文档编号:15395755
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:21
- 大小:279.34KB
五子棋课设文档格式.docx
《五子棋课设文档格式.docx》由会员分享,可在线阅读,更多相关《五子棋课设文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
学生为了不落后他人每天早起晚睡不断地学习,压力巨大。
所以为了缓解大家的压力,使大家在工作、学习之余娱乐一下,活跃大脑,提高工作、学习效率,我本人设计了一个简易的五子棋游戏。
本系统将利用五子棋游戏作为研究对象,在Windows平台下,运用java语言设计的一个能够实现人机对战的简单游戏。
该系统涉及到人工智能方面的知识,而计算机博弈是人工智能研究的一个重要分支,其中还包括几个重要的搜索算法。
只有通过一定的研究,才能实现五子棋的人机对战功能。
关键词:
网络对战;
五子棋;
第一章概述
1.1开发背景
随着计算机技术和互联网的飞速发展,游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一。电脑游戏的出现为人们提供了新的娱乐平台,丰富了人们的业余生活。
因此与游戏有关的软件深受广大青少年的喜爱。
随着近几年来软件技术的不断进步、不断发展,软件游戏的操作要求越来越简单
而五子棋游戏的诞生更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当前微型计算机已经是在广大人群中流行着,用电脑来下五子棋更是一种时尚。
现在网络上出现了各种各样的五子棋软件,有大师级的、新手级的等等。
所有这些都满足了不同人群的需要,所以当前五子棋越来越被许多人所熟悉。
目前的五子棋程序的发展也非常快,从最初的双人发展到人机,然后到现在的网络对战,已经受到越来越多人的喜爱和重视。
第二章五子棋程序的介绍
2.1用户需求分析
1.显示一个十五行十五列的五子棋棋盘。
2.用鼠标点击棋盘上的交叉点处,则会准确地在该位置显示出棋子。
3.玩家1为黑方先下棋,玩家2为白方。
4.可以自动判断游戏是否结束,是否黑方或者是白方已经胜利,并且跳出对话框来提示玩家。
5.在游戏棋盘上方会有一个游戏信息,这个游戏信息是用来提示当前是黑白双方的哪一方下子,玩家可以根据这个提示来下棋,而不会导致不清楚轮到哪一方下棋。
6.可以重新开始游戏,在下棋时如果玩家点击结束按钮,则给出提示“对方已经结束游戏!
”,然后如果玩家点击开始按钮,则给出提示“对方请求与你开始游戏,是否同意”,若点击同意,则可以开始下棋,游戏中,若点击断开,则提示“连接已断开,请重新连接主机和客服端”
通过上述用户需求,可以得出一个整体的设计方案,规定游戏的基本功能如下结构图
2.2五子棋程序概要设计
本五子棋游戏主要的有5大功能它们分别是:
主机,客户端,开始,断开,结束。
2.4图为软件功能结构图:
图2.1软件功能结构图
流程图
NO
NO
YES
YESYESNO
第三章五子棋的详细设计
3.1界面的实现及鼠标事件的监听
3.1.1界面的生成
界面包括棋盘,消息提示窗,还有菜单
在创建完成一个基本窗口后,将棋盘加载进窗口界面,并加入菜单,就得到了一个简单的棋盘。
publicstaticvoidmain(String[]args){
Gobanggobang=newGobang();
gobang.setResizable(false);
Dimensions=Toolkit.getDefaultToolkit().getScreenSize();
//获得屏幕对象,以便使窗体居中显示
gobang.setSize(450,500);
gobang.setLocation((s.width-gobang.getWidth())/2,(s.height-gobang.getHeight())/2);
gobang.setVisible(true);
}
publicGobang(){
super("
五子棋"
);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menuEvent();
//添加各个菜单的事件监听器
menuInit();
//设置各个菜单的Enable属性
//添加棋子面板
JPanelp1=newJPanel(newBorderLayout());
p1.add(mp,BorderLayout.CENTER);
JPanelp2=newJPanel(newGridLayout(15,15));
for(inti=0;
i<
15;
i++){
for(intj=0;
j<
j++){
p[i][j]=newToePanel(i,j,this);
p2.add(p[i][j]);
server.addActionListener(p[i][j].ms);
client.addActionListener(p[i][j].ms);
//点"
客户端"
菜单时清空所有的棋子
start.addActionListener(p[i][j].ms);
addActionListener(p[i][j].ms);
}
}
ContainerconPane=this.getContentPane();
conPane.setLayout(newBorderLayout());
conPane.add(p1,BorderLayout.NORTH);
conPane.add(p2,BorderLayout.CENTER);
MessagePanel(){
setBackground(Color.BLACK);
message.setFont(newFont("
宋体"
Font.BOLD,15));
message.setForeground(Color.BLACK);
//初始化时设置消息标签的颜色为
add(message);
showMessageTimer=newTimer(1,al);
//初始化时间对象
setMessage("
图3.2运行结果图
3.1.2鼠标事件的监听
MouseEvent是公有类。
这个类封装了与鼠标事件有关的信息,包括鼠标单击和处理鼠标事件。
首先是添加事件监听器this.addMouseListener(this)(this是java中的一个特殊的对象引用。
每个对象对其自身的引用称为this引用。
this引用被隐式地引用一个对象的实例变量和方法),鼠标事件由鼠标事件源产生,并且由实现了MouseListener接口的处理对象。
发送MouseEvent类的实例给鼠标监视器事件以帮助处理鼠标事件首先判断是否该玩家落子和胜负已分及游戏是否开始,如确实轮到玩家落子,则首先得到鼠标单击坐标,然后转换得到距离最近的落子点,并在这个落子点上绘制相应颜色的棋子,然后将玩家落子的坐标信息发送给对方,并提醒对方落子。
代码片段如下:
单击鼠标时执行下棋的方法
addMouseListener(newMouseAdapter(){
publicvoidmousePressed(MouseEvente){
//能够下棋的条件:
1.当前格子为空2.该自己下3.对方没有结束游戏4.单击的是鼠标左键
if(f==0&
&
main.t&
main.t2&
e.getButton()==1){
if(main.x!
=-1)
main.p[main.x][main.y].stopTiShi();
/xiaQi(main.c);
//在鼠标点击处下棋
main.mp.setMessage("
等待对方落子..."
main.t=false;
//下子后必须等对方下子后才能再下
main.out.println(row);
main.out.println(col);
main.checkWin(row,col,main.c);
}
});
3.2按钮功能的实现
Java中的鼠标和键盘事件,使用MouseListener接口处理鼠标事件.鼠标事件有5种:
按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出。
鼠标事件类型是MouseEvent,主要方法有:
getX(),getY()获取鼠标位置
getSource()获取鼠标发生的事件源
事件源获得监视器的方法是addMouseListener()
添加各个菜单的事件监听器
privatevoidmenuEvent(){
game.addSeparator();
game.add(server);
game.add(client);
game.add(start);
game.add(stop);
game.add(cencal);
mb.add(game);
this.setJMenuBar(mb);
//"
主机"
菜单
server.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
server.setEnabled(false);
client.setEnabled(false);
cencal.setEnabled(true);
try{
InetAddressip=InetAddress.getLocalHost();
Stringaddress=ip.getHostName();
//获得本机机器名
mp.setMessage(address+"
正等待客户端连接..."
}catch(Exceptionee){
}
wc=newWaitClient();
wc.start();
client.addActionListener(newActionListener(){
//连主机
mp.setMessage("
Stringip=JOptionPane.showInputDialog(Gobang.this,"
请输入主机IP地址或主机名称:
"
"
127.0.0.1"
if(ip!
=null){
Sockets=newSocket(ip,10000);
out=newPrintWriter(s.getOutputStream(),true);
in=ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋