下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 java 含类图 五子棋小游戏

java 含类图 五子棋小游戏.doc

java 含类图 五子棋小游戏

小桥燕飞过
2017-09-01 0人阅读 举报 0 0 暂无简介

简介:本文档为《java 含类图 五子棋小游戏doc》,可适用于综合领域

java含类图五子棋小游戏课程名称:JAVA语言程序设计设计题目:五子棋小游戏院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:年月日目录一、题目描述二、设计思路三、运行结果四、源代码五、总结六、参考文献:一、题目描述:五子棋是一种两人对弈的纯策略型棋类游戏是起源于中国传统五子棋的棋具与围棋相同棋子分为黑白两色棋盘为×棋子放置于棋盘线交叉点上。两人对局各执一色轮流下一子先将横、竖或斜线的个或个以上同色棋子连成不间断的一排者为胜。本课题的功能就是能按照五子棋的规则实现人机对战并能顺利结束棋局。二、设计思路:类图:说明:表java源文件及其功能序文件名主要功能备注号本程序的主函数初始化棋盘Chess实现电脑可以自动下棋分为种情况Autoplay扫描整个棋盘记录连在一起的黑白为判断胜负服务Scan棋子数实现人与电脑有次序的下棋黑棋白棋有序的下Sort判断人与电脑的胜负可以在文本框中显示Judge胜负结果电脑估计为电脑下棋提供帮助Evaluate表Chess成员变量描变量类型名称述控制棋子颜inti色重新开局ButtonButton请黑棋下子TextFieldtext请白棋下子TextFieldtext这是第"i"TextFieldtext步表Chess方法名功能备注ChessPad()初始化棋盘设置棋盘颜色对棋子等图像进行初设置棋子大小颜色等Voidpaint(Graphicsg)始化publicvoid单击实践mousePressed(MouseEve鼠标的实践监听nte)publicvoidpaint(Graphics画出图像控制图像的大小范围g)publicvoid处理按下鼠标的事件选中下棋的位置mousePressed(MouseEvente)publicvoidmouseReleased(MouseEv处理鼠标离开的事件本步下棋结束ente)publicvoid鼠标离开组件不实现任何事处理鼠标离开棋盘时mouseExited(MouseEvent件e)publicvoid处理发生单击的事件实现下棋以及重新开始游戏mouseClicked(MouseEvente)表Autoplay成员变量描述变量类型名称统计玩家的连起来的棋子intX数电脑玩家的连起来的棋子IntY数表Autoplay方法名功能备注voidautoPlay(int分情况实现电脑自动使用switch语句分为种情chesspad,inta,intb)下棋况来下棋表Scan成员变量描述变量类型名称统计棋盘种五个连起来的数组intshape棋子数控制行数inti控制列数intj表Scan方法名功能备注voidscan(int判断棋盘上连在一起chesspad,int的黑白棋子个数。colour){表Sort成员变量描述变量类型名称保存临时变量inttemp表Sort方法名功能备注publicvoidsort(int实现黑白棋子的交替数组为参数shape)下表Judge成员变量描述变量类型名称控制行数inti控制列数intj记录连在一起的黑白棋子intflag数表Judge方法名功能备注staticbooleanjudge(int判断玩家与电脑的游使用静态函数分多钟情况戏胜负a,intcolor)判断表Evaluate成员变量描述变量类型名称玩家最可能下的棋子的行intmaxx数玩家最可能下的棋子的列intmaxy数保存最大可能下棋的位置intmax控制行数inti控制列数intj表Evaluate方法名功能备注publicvoidevaluate(int电脑用于估计玩家下shape)步棋的走法三、运行结果:四、源代码:importjavaawt*importjavaawtevent*classChessPadextendsPanelimplementsMouseListener,ActionListener{intarray=newintScanscanp=newScan()Scanscanc=newScan()AutoPlayautoPlay=newAutoPlay()Evaluateevaluatep=newEvaluate()Evaluateevaluatec=newEvaluate()Sortsort=newSort()inti=intx=,y=,棋子颜色=Buttonbutton=newButton("重新开局")TextFieldtext=newTextField("请黑棋下子"),text=newTextField(),text=newTextField()ChessPad(){setSize(,)setLayout()setBackground(Colorpink)addMouseListener(this)add(button)buttonsetBounds(,,,)buttonaddActionListener(this)add(text)textsetBounds(,,,)add(text)textsetBounds(,,,)add(text)textsetBounds(,,,)for(inti=i<i)for(intj=j<j){arrayij=}for(inti=i<i)for(intj=j<j)for(inth=h<h){scanpshapeijh=scancshapeijh=}textsetEditable(false)textsetEditable(false)}publicvoidpaint(Graphicsg){for(inti=i<=i=i){gdrawLine(,i,,i)}for(intj=j<=j=j){gdrawLine(j,,j,)}gfillOval(,,,)gfillOval(,,,)gfillOval(,,,)gfillOval(,,,)gfillOval(,,,)}publicvoidmousePressed(MouseEvente){inta=,b=if(egetModifiers()==InputEventBUTTONMASK){x=(int)egetX()y=(int)egetY()ChessPointblackchesspointblack=newChessPointblack(this)ChessPointwhitechesspointwhite=newChessPointwhite(this)itextsetText("这是第"i"步")if((x)<||(y)<||(x)>||(y)>){}else{a=(x)b=(y)if(arrayba==棋子颜色==){thisadd(chesspointblack)chesspointblacksetBounds(a*,b*,,)棋子颜色=棋子颜色*()arrayba=if(Judgejudge(array,)){textsetText("黑棋赢!")棋子颜色=removeMouseListener(this)}else{textsetText("")}}}if(i>棋子颜色==){scanpscan(array,)scancscan(array,)sortsort(scanpshape)sortsort(scancshape)evaluatepevaluate(scanpshape)evaluatecevaluate(scancshape)棋子颜色=棋子颜色*()thisadd(chesspointwhite)if(evaluatepmax>evaluatecmax){textsetText(evaluatepmaxx""evaluatepmaxy""evaluatepmax)chesspointwhitesetBounds((evaluatepmaxy)*,(evaluatepmaxx)*,,)arrayevaluatepmaxxevaluatepmaxy=textsetText("请黑棋下子")for(inti=i<i)for(intj=j<j)for(inth=h<h){scanpshapeijh=scancshapeijh=}}else{textsetText(evaluatecmaxx""evaluatecmaxy""evaluatecmax)chesspointwhitesetBounds((evaluatecmaxy)*,(evaluatecmaxx)*,,)arrayevaluatecmaxxevaluatecmaxy=if(Judgejudge(array,)){textsetText("白棋赢!")棋子颜色=removeMouseListener(this)}else{textsetText("请黑棋下子")for(inti=i<i)for(intj=j<j)for(inth=h<h){scanpshapeijh=scancshapeijh=}}}}if(i<=棋子颜色==){autoPlayautoPlay(array,b,a)thisadd(chesspointwhite)棋子颜色=棋子颜色*()chesspointwhitesetBounds((autoPlayy)*,(autoPlayx)*,,)arrayautoPlayxautoPlayy=if(Judgejudge(array,)){textsetText("白棋赢!")棋子颜色=removeMouseListener(this)}else{textsetText("请黑棋下子")textsetText(autoPlayx""autoPlayy)}}}}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseClicked(MouseEvente){}publicvoidactionPerformed(ActionEvente){thisremoveAll()棋子颜色=add(button)buttonsetBounds(,,,)add(text)textsetBounds(,,,)textsetText("")textsetText("请黑棋下子")add(text)textsetBounds(,,,)add(text)textsetBounds(,,,)i=textsetText("这是第"i"步")for(inti=i<i)for(intj=j<j){arrayij=}for(inti=i<i)for(intj=j<j)for(inth=h<h){scanpshapeijh=scancshapeijh=}addMouseListener(this)}}classChessPointblackextendsCanvasimplementsMouseListener{ChessPadchesspad=ChessPointblack(ChessPadp){setSize(,)addMouseListener(this)chesspad=p}publicvoidpaint(Graphicsg){gsetColor(Colorblack)gfillOval(,,,)}publicvoidmousePressed(MouseEvente){*if(egetModifiers()==InputEventBUTTONMASK){chesspadremove(this)chesspad棋子颜色=chesspadtextsetText("")chesspadtextsetText("请黑棋下子")}*}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseClicked(MouseEvente){}}classChessPointwhiteextendsCanvasimplementsMouseListener{ChessPadchesspad=ChessPointwhite(ChessPadp){setSize(,)addMouseListener(this)chesspad=p}publicvoidpaint(Graphicsg){gsetColor(Colorwhite)gfillOval(,,,)}publicvoidmousePressed(MouseEvente){*if(egetModifiers()==InputEventBUTTONMASK){chesspadremove(this)chesspad棋子颜色=chesspadtextsetText("请白棋下子")chesspadtextsetText("")}*}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseClicked(MouseEvente){}}publicclassChessextendsFrame{ChessPadchesspad=newChessPad()Chess(){setVisible(true)setLayout()Labellabel=newLabel("五子棋",LabelCENTER)add(label)labelsetBounds(,,,)labelsetBackground(Colororange)add(chesspad)chesspadsetBounds(,,,)addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){Systemexit()}})pack()setSize(,)}publicstaticvoidmain(Stringargs){Chesschess=newChess()}}classAutoPlay{intx,yvoidautoPlay(intchesspad,inta,intb){intrandomNumber=(int)(Mathrandom()*)switch(randomNumber){case():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}breakcase():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}breakcase():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}breakcase():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}breakcase():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}breakcase():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}breakcase():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}breakcase():if(chesspadab==){x=ay=b}elseif(chesspadab==){x=ay=b}else{x=ay=b}break}}}classEvaluate{intmaxx,maxy,maxpublicvoidevaluate(intshape){inti=,j=for(i=i<i)for(j=j<j){switch(shapeij){case:shapeij=breakcase:switch(shapeij){case:shapeij=shapeijshapeijbreakcase:shapeij=shapeijshapeijbreakdefault:shapeij=shapeijshapeij}breakcase:switch(shapeij){case:shapeij=shapeijshapeijbreakdefault:shapeij=shapeijshapeij}breakcase:shapeij=shapeijshapeijshapeijbreakcase:shapeij=shapeijshapeijshapeijshapeijdefault:shapeij=}}intx=,y=max=for(x=x<x)for(y=y<y)if(max<shapexy){max=shapexymaxx=xmaxy=y}}}classJudge{staticbooleanjudge(inta,intcolor){inti,j,flagfor(i=i<i){flag=for(j=j<j)if(aij==color){flagif(flag==)returntrue}elseflag=}for(j=j<j){flag=for(i=i<i)if(aij==color){flagif(flag==)returntrue}elseflag=}for(j=j<j){flag=intm=jfor(i=i<=ji){if(aim==color){flagif(flag==)returntrue}elseflag=}}for(j=j>=j){flag=intm=jfor(i=i<=ji){if(aim==color){flagif(flag==)returntrue}elseflag=}}for(i=i>=i){flag=intn=ifor(j=j<ij){if(anj==color){flagif(flag==)returntrue}elseflag=}}for(j=j>=j){flag=intm=jfor(i=i>=ji){if(aim==color){flagif(flag==)returntrue}elseflag=}}returnfalse}}classScan{intshape=newintvoidscan(intchesspad,intcolour){inti,jfor(i=i<=i)for(j=j<=j)if(chesspadij==){intm=i,n=jwhile(n>=chesspadmn==colour){shapeij}n=jwhile(n<=chesspadmn==colour){shapeij}n=jwhile(m>=chesspadmn==colour){shapeij}m=iwhile(m<=chesspadmn==colour){shapeij}m=iwhile(m>=n<=chesspadmn==colour){shapeij}m=in=jwhile(m<=n>=chesspadmn==colour){shapeij}m=in=jwhile(m>=n>=chesspadmn==colour){shapeij}m=in=jwhile(m<=n<=chesspadmn==colour){shapeij}}}}classSort{publicvoidsort(intshape){inttempfor(inti=i<i)for(intj=j<j){for(inth=h<=h){for(intw=w>=hw){if(shapeijw<shapeijw){temp=shapeijwshapeijw=shapeijwshapeijw=temp}}}}}}五、总结:这个程序能够很好地实现它的功能并且有非常好的界面。但也有改进的地方比如让它更加智能一些。通过这次实践我学到了很多。JAVA是一个完全面向对象的语言JAVA的命名规则是很容易让人接受的。而且容易背编程人员记住。经过两周的实践训练对JAVA的综合应用能力有了较大的提高另外对JAVA的特点有了更深层次的认识。这次实践中使用的代码虽然不长但类与类之间也有很强的逻辑关系这就是面向对象语言的最大优势这样可使编程者更轻松的运用JAVA。六、参考文献:YDanielLiang著java语言程序设计基础篇(第六版)机械工业出版社

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/28

java 含类图 五子棋小游戏

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利