计算机网络实验报告.docx

上传人:b****5 文档编号:2932443 上传时间:2022-11-16 格式:DOCX 页数:18 大小:264.07KB
下载 相关 举报
计算机网络实验报告.docx_第1页
第1页 / 共18页
计算机网络实验报告.docx_第2页
第2页 / 共18页
计算机网络实验报告.docx_第3页
第3页 / 共18页
计算机网络实验报告.docx_第4页
第4页 / 共18页
计算机网络实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

计算机网络实验报告.docx

《计算机网络实验报告.docx》由会员分享,可在线阅读,更多相关《计算机网络实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

计算机网络实验报告.docx

计算机网络实验报告

工商学院计算机网络实验报告

年级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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1