计算机网络实验报告.docx
- 文档编号:2932443
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:18
- 大小:264.07KB
计算机网络实验报告.docx
《计算机网络实验报告.docx》由会员分享,可在线阅读,更多相关《计算机网络实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
计算机网络实验报告
工商学院计算机网络实验报告
年级2012级学号2012484306姓名王向磊成绩
专业网络工程实验地点B3-216指导教师常卓
实验项目网络五子棋游戏实验日期2015年5月5日
1、实验目的
1.1使用Java编写五子棋程序,使其能正常运行。
1.2掌握编写过程的一些类和类成员的使用,并且了解五子棋制作过程的一些步骤和了解一些算法。
二、实验原理
2.1职业连珠规则
2.1.1黑方先下子,白后下,从天元开始相互顺序落子。
2.1.2最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。
2.1.3黑棋禁手判负,白棋无禁手。
黑棋禁手包括“三三”(包括“四三三”)、“四四”(包括“四四三”)、“长连”。
即黑棋只能以“四三”取胜。
有关术语解释请见图示说明。
2.1.4如分不出胜负,则定为平局。
对局中拔子、中途退场均判为负。
2.1.5五连与禁手同时形成,判胜。
2.2比赛中的规定和特例
2.2.1对局开始前,双方猜子,大数减小数,单数交换,偶数不换。
2.2.2白棋第一手(即盘面第二着棋)应在天元为界自己一侧布子,主要以示尊重对方,之后双方可任意行子。
2.2.3对局中双方应遵守“职业连珠五子棋规则”,如出现争议,应由裁判判定。
2.2.4对局中掉子(棋子掉落在棋盘上)的一方判负。
如遇推子或蹭子,以盘面第一落点为准。
用手将棋子扶正不算违规。
2.2.5对局中应礼貌行棋,防止不正常声音、动作影响对方思考。
2.2.6比赛结束后,双方应将各自棋子放回原处。
2.2.7对局中如黑方出现禁手,白方应立即指出禁手点,黑方即负。
如白方在黑方出现禁手后,又下一步白子,黑棋禁手则不成立了。
2.2.8比赛对局时间,双方分别为15分钟、1小时、2小时、5小时四个等级标准,超时判负。
2.3特殊规定
职业五子棋虽然对黑棋采取了种种限制,但黑子先行的优势依然很大。
因此,在高段位的职业比赛中,又出现了三种特殊的规定。
2.3.1指定打法:
是指比赛双方按照约定好的开局进行对弈,由白棋先行。
2.3.2三手可交换:
是指黑棋下盘面第3手棋后,白方在下第四手之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。
2.3.3五手两打法:
是指黑棋在下盘面上关键的第5手棋时,必须下两步棋,让白棋在这两步棋中拿掉一粒棋子,然后再继续对弈。
一般说来,白棋肯定拿掉对白方不利的一点,而保留对黑方较为不利的那点让黑方行棋。
3、实验要求
编写一个五子棋程序。
程序主要实现以下功能:
实现五子棋界面,要求人性化界面简洁美观;
2.实现黑白色轮流下棋功能,能提示下棋方;
3.实现连成五子自动判断功能;
4.实现时间设置功能,认输功能;
四、实验步骤
头部文件
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Toolkit;
importjava.awt.event.KeyAdapter;
importjava.awt.event.KeyEvent;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjavax.imageio.ImageIO;
importjavax.swing.JFrame;importjavax.swing.JOptionPane;
第一步:
设计界面
代码如下:
publicclassFiveChessFrameextendsJFrameimplementsMouseListener,Runnable
{
intwidth=Toolkit.getDefaultToolkit().getScreenSize().width;
intheight=Toolkit.getDefaultToolkit().getScreenSize().height;BufferedImagebgImage=null;
intx,y;
//保存棋盘,0表示棋盘该点无棋子,表示黑子,表示白子
int[][]allChess=newint[15][15];
//保存当前下子是黑子还是白字,true是黑子,false是白子
BooleanisBlack=true;
//标识当前游戏是否结束
BooleancanPlay=true;Stringmessage="黑方先行";
//保存棋谱
int[]chessX=newint[255];int[]chessY=newint[255];intcountX,countY;
//保存最大时间
intmaxTime=0;
//游戏时间设置的信息
StringblackMessage="无限制";StringwhiteMessage="无限制";
//保存黑白方所剩余的时间
intblackTime=0;intwhiteTime=0;
//游戏倒计时线程
Threadtimer=newThread(this);
publicFiveChessFrame()
{this.setTitle("五子棋游戏");
this.setSize(500,500);
this.setLocation((width-500)/2,(height-500)/2);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.repaint();
this.addMouseListener(this);
timer.start();
timer.suspend();
}
publicvoidpaint(Graphicsg)
{
try{bgImage=ImageIO.read(newFile("src/wzq/五子棋棋盘.jpg"));}
catch(IOExceptione){e.printStackTrace();}
//双缓冲
BufferedImagebi=newBufferedImage(500,500,BufferedImage.TYPE_INT_RGB);Graphicsg2=bi.createGraphics();
g2.drawImage(bgImage,43,60,375,375,this);
g2.setColor(newColor(0,169,158));
g2.fill3DRect(43,60,375,375,true);
for(inti=0;i<=15;i++)
{g2.setColor(Color.WHITE);
g2.drawLine(43,i*25+60,375+43,60+i*25);
g2.drawLine(i*25+43,60,43+i*25,375+60);
}g2.setFont(newFont("黑体",Font.BOLD,20));
g2.drawString("游戏信息:
"+message,50,50);
g2.drawRect(30,440,180,40);
g2.drawRect(250,440,180,40);
g2.setFont(newFont("宋体",0,12));
g2.drawString("黑方时间:
"+blackMessage,40,465);
g2.drawString("白方时间:
"+whiteMessage,260,465);
//重新开始按钮
g2.drawRect(428,66,54,20);
g2.drawString("重新开始",432,80);
//游戏设置按钮
g2.drawRect(428,106,54,20);
g2.drawString("游戏设置",432,120);
//游戏说明按钮
g2.drawRect(428,146,54,20);
g2.drawString("游戏说明",432,160);
//退出游戏按钮
g2.drawRect(428,186,54,20);
g2.drawString("退出游戏",432,200);
//悔棋
g2.drawRect(428,246,54,20);
g2.drawString("悔棋",442,260);
//认输
g2.drawRect(428,286,54,20);
g2.drawString("认输",442,300);
for(inti=0;i<15;i++){
for(intj=0;j<15;j++){
//黑子
if(allChess[i][j]==1){inttempX=i*25+55;
inttempY=j*25+72;
g2.setColor(Color.BLACK);
g2.fillOval(tempX-8,tempY-8,16,16);}
//白子
if(allChess[i][j]==2){inttempX=i*25+55;
inttempY=j*25+72;
g2.setColor(Color.WHITE);
g2.fillOval(tempX-8,tempY-8,16,16);
g2.setColor(Color.BLACK);
g2.drawOval(tempX-8,tempY-8,16,16);
}
}
}
g.drawImage(bi,0,0,this);
}
第二步:
增加对mouse的点击和移动的处理,可以用来下。
代码如下:
@Override
publicvoidmouseClicked(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidmouseEntered(MouseEv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 实验报告 实验 报告