天津科技大学Java课程设计.docx

上传人:b****7 文档编号:8870769 上传时间:2023-02-02 格式:DOCX 页数:14 大小:46.57KB
下载 相关 举报
天津科技大学Java课程设计.docx_第1页
第1页 / 共14页
天津科技大学Java课程设计.docx_第2页
第2页 / 共14页
天津科技大学Java课程设计.docx_第3页
第3页 / 共14页
天津科技大学Java课程设计.docx_第4页
第4页 / 共14页
天津科技大学Java课程设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

天津科技大学Java课程设计.docx

《天津科技大学Java课程设计.docx》由会员分享,可在线阅读,更多相关《天津科技大学Java课程设计.docx(14页珍藏版)》请在冰豆网上搜索。

天津科技大学Java课程设计.docx

天津科技大学Java课程设计

《高级语言程序设计期末作业》

 

题目——五子棋

 

学号:

王琪

姓名:

11103333

指导老师:

程岚岚

时间:

2013年12月16

1、

开发工具:

MyEclipse

2、程序的功能介绍

系统实现五子棋人人对战。

3、系统分析与设计

(一)五子棋基本规则

1.五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点的落子。

接着黑方再以天元中心的25个交叉点的范围内落盘面的第三子,之后黑白双方相互顺序子。

   2.最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。

   3.出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之为禁手。

   4.禁手只对黑棋有效,白棋无禁手。

   5.黑方禁手形成时,白方需立即指出,黑方将被判负。

若白方未发现黑方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。

   6.黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。

   7.在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判为负。

   8.在对局中棋子掉落在棋盘上将被判负。

若推子或蹭子,以盘面第一落点为准。

用手将棋子推正不算违犯规则。

   9.在对局中,一方自行中止比赛如:

中途退场,将被判负。

   10.在对局中对方宣布认输,本局获胜。

   11.超过比赛规定所用时间限制,将被判为负:

正式比赛期间,迟到时间超过比赛容许时间将被判负。

   12.如下至最终一子仍不分胜负则定为平局。

13.中盘期间双方同意和局提议,判定为平局

(二)

(1)1.本款游戏有“游戏开始”和“重置游戏”和“黑白哪个子先行”三个选项。

2.绘制棋盘,14条横线,14条竖线,在直线交点处下棋子(实心黑白圆形)。

3.棋盘处于鼠标监听状态,当鼠标在棋盘上有点击操作的时候,程序会获得鼠标点击的坐标然后换算成对应的棋盘的位置,再判断此处是否有棋子,假如没有,那么在此处画出对应颜色的实心棋子,假如已经有棋子了,则提示玩家此处已经有棋子请重新下棋。

4、系统功能实现及部分核心代码

(1)系统功能实现

1游戏开始界面选择哪种子先开始.

2.游戏开始进行

3游戏结束

(2)importjava.awt.*;

importjava.awt.event.*;

importjava.applet.Applet;

importjava.awt.Color;

publicclassGoBangextendsAppletimplementsActionListener,MouseListener,

MouseMotionListener,ItemListener{

intcolor=0;//旗子的颜色标识0:

白子1:

黑子

booleanisStart=false;//游戏开始标志

intbodyArray[][]=newint[16][16];//设置棋盘棋子状态0无子1白子2黑子

Buttonb1=newButton("游戏开始");

Buttonb2=newButton("重置游戏");

LabellblWin=newLabel("");

CheckboxckbHB[]=newCheckbox[2];

CheckboxGroupckgHB=newCheckboxGroup();

publicvoidinit(){

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]=newCheckbox("白子先",ckgHB,false);

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

ckbHB[1]=newCheckbox("黑子先",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);

gameInit();

this.resize(newDimension(450,350));

}

publicvoiditemStateChanged(ItemEvente){

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

{

color=0;

}else{

color=1;

}

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==b1){

gameStart();

}else{

reStart();

}

}

publicvoidmousePressed(MouseEvente){

}

publicvoidmouseClicked(MouseEvente){

intx1,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;

setDown(x1,y1);

}

publicvoidmouseEntered(MouseEvente){

}

publicvoidmouseExited(MouseEvente){

}

publicvoidmouseReleased(MouseEvente){

}

publicvoidmouseDragged(MouseEvente){

}

publicvoidmouseMoved(MouseEvente){

}

publicvoidpaint(Graphicsg){

g.setColor(Color.lightGray);

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

g.setColor(Color.black);

for(inti=1;i<16;i++){

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

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

}

}

publicvoidsetDown(intx,inty)//落子

{

if(!

isStart)//判断游戏未开始

{

return;

}

if(bodyArray[x/20][y/20]!

=0){

return;

}

Graphicsg=getGraphics();

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

{

g.setColor(Color.black);

color=0;

}else{

g.setColor(Color.white);

color=1;

}

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

bodyArray[x/20][y/20]=color+1;

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

{

lblWin.setText(startColor(color)+"赢了!

");

isStart=false;

}

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

{

lblWin.setText(startColor(color)+"赢了!

");

isStart=false;

}

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

{

lblWin.setText(startColor(color)+"赢了!

");

isStart=false;

}

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

{

lblWin.setText(startColor(color)+"赢了!

");

isStart=false;

}

}

publicStringstartColor(intx){

if(x==0){

return"黑子";

}else{

return"白子";

}

}

publicvoidgameStart()//游戏开始

{

isStart=true;

enableGame(false);

b2.setEnabled(true);

}

publicvoidgameInit()//游戏开始初始化

{

isStart=false;

enableGame(true);

b2.setEnabled(false);

ckbHB[0].setState(true);

for(inti=0;i<16;i++){

for(intj=0;j<16;j++){

bodyArray[i][j]=0;

}

}

lblWin.setText("");

}

publicvoidreStart()//游戏重新开始

{

repaint();

gameInit();

}

publicvoidenableGame(booleane)//设置组件状态

{

b1.setEnabled(e);

b2.setEnabled(e);

ckbHB[0].setEnabled(e);

ckbHB[1].setEnabled(e);

}

publicbooleangameWin1(intx,inty)//判断输赢横

{

intx1,y1,t=1;

x1=x;

y1=y;

for(inti=1;i<5;i++){

if(x1>15){

break;

}

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

t+=1;

}else{

break;

}

}

for(inti=1;i<5;i++){

if(x1<1){

break;

}

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

t+=1;

}else{

break;

}

}

if(t>4){

returntrue;

}else{

returnfalse;

}

}

publicbooleangameWin2(intx,inty)//判断输赢竖

{

intx1,y1,t=1;

x1=x;

y1=y;

for(inti=1;i<5;i++){

if(x1>15){

break;

}

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

t+=1;

}else{

break;

}

}

for(inti=1;i<5;i++){

if(x1<1){

break;

}

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

t+=1;

}else{

break;

}

}

if(t>4){

returntrue;

}else{

returnfalse;

}

}

publicbooleangameWin3(intx,inty)//判断输赢左斜

{

intx1,y1,t=1;

x1=x;

y1=y;

for(inti=1;i<5;i++){

if(x1>15){

break;

}

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

t+=1;

}else{

break;

}

}

for(inti=1;i<5;i++){

if(x1<1){

break;

}

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

t+=1;

}else{

break;

}

}

if(t>4){

returntrue;

}else{

returnfalse;

}

}

publicbooleangameWin4(intx,inty)//判断输赢左斜

{

intx1,y1,t=1;

x1=x;

y1=y;

for(inti=1;i<5;i++){

if(x1>15){

break;

}

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

t+=1;

}else{

break;

}

}

for(inti=1;i<5;i++){

if(x1<1){

break;

}

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

t+=1;

}else{

break;

}

}

if(t>4){

returntrue;

}else{

returnfalse;

}

}

}

5、小结(开发中遇到的问题,怎么解决的)

通过对五子棋游戏的编写,使自己对java语言有了更深的了解。

也更加熟悉和了解了java开发工具Eclipse的使用。

不过还有很多不足之处,比如没有能设置禁手,没有能设置悔棋,还有很多东西可以扩充完善。

 

 

欢迎您的下载,

资料仅供参考!

 

致力为企业和个人提供合同协议,策划案计划书,学习课件等等

打造全网一站式需求

 

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

当前位置:首页 > 高等教育 > 工学

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

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