java怎么实现简单五子棋小游戏

java怎么实现简单五子棋小游戏

本篇文章为大家展示了java怎么实现简单五子棋小游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

讲解

五子棋,实际上就是用一个数组来实现的。没有其他很复杂的结构。
首先我们制作五子棋,先要有一个棋盘。

publicvoidsetGraphics(Graphicsg){this.g=g;for(inti=0;i<11;i++){g.drawLine(100+Size*i,100,100+Size*i,500);g.drawLine(100,100+Size*i,500,100+Size*i);}for(inti=0;i<11;i++){for(intj=0;j<11;j++){chessboard[i][j]=0;}}}

此时我们在画布上制作了一个棋盘,图示如下:

接下来我们要实现的就是如何去放置棋子了。
放置棋子大体思路就是,当我们点击一个网格点的时候,可以出现一个白棋或者黑棋,所以我们在这里需要学会如何画一个椭圆。

//绘制一个椭圆g.drawOval(a-Size/4,b-Size/4,Size/2,Size/2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上//填充一个椭圆g.setColor(Color.BLACK);g.fillOval(a-Size/4,b-Size/4,Size/2,Size/2);

此时,点击某一个位置就会出现一个黑棋子。这里我们需要注意的是,我们不可能要求用户每一次的点击都非常准确,所以我们必须设定一个范围,只要这个范围内的点击,我们都默认点击到了这个网格上面。因为网格大小为40,所以我们以一个网格点位中心,向上下左右移动20长度的范围都属于这个点。
白棋的设置也一样

if(number==0){//绘制一个椭圆g.drawOval(a-Size/4,b-Size/4,Size/2,Size/2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上//填充一个椭圆g.setColor(Color.BLACK);g.fillOval(a-Size/4,b-Size/4,Size/2,Size/2);number++;}else{g.drawOval(a-Size/4,b-Size/4,Size/2,Size/2);//填充一个椭圆g.setColor(Color.WHITE);g.fillOval(a-Size/4,b-Size/4,Size/2,Size/2);number--;}

现在我们看一下我们的棋盘,白棋和黑棋都可以放到棋盘上面了,但是依旧存在一个问题,当我们在同一位置点击两次后会发生覆盖现象。如何解决?
我们只需要设置一个数组来记录这个位置是否放置了棋子就好了

完整代码

packagegame;importjava.awt.Graphics;importjavax.swing.JFrame;publicclassShowUI{publicvoidDraw(){//设置格子的大小JFramedrawframe=newJFrame();//创建一个窗体drawframe.setSize(1000,600);//设置窗体大小drawframe.setLocationRelativeTo(null);//设置相对位置drawframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体操作//创建监听器对象DrawListenerdraw=newDrawListener();drawframe.addMouseListener(draw);drawframe.setVisible(true);//设置窗体可见try{Thread.sleep(566);}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}Graphicsg=drawframe.getGraphics();//设置画布draw.setGraphics(g);}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubShowUIa=newShowUI();a.Draw();//引用对象}}

packagegame;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.RenderingHints;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;publicclassDrawListenerimplementsMouseListener{Graphicsg;publicintStart_X=50;publicintStart_Y=50;publicintSize=40;publicintnumber=0;publicint[][]chessboard=newint[11][11];publicvoidsetGraphics(Graphicsg){this.g=g;for(inti=0;i<11;i++){g.drawLine(100+Size*i,100,100+Size*i,500);g.drawLine(100,100+Size*i,500,100+Size*i);}for(inti=0;i<11;i++){for(intj=0;j<11;j++){chessboard[i][j]=0;}}}/*publicvoiddrawOval(Graphicsg){//Graphics2Dg2d=(Graphics2D)g.create();//g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);//g.setColor(Color.RED);//1.绘制一个圆:圆的外切矩形左上角坐标为(0,0),宽高为100g.drawOval(0,0,100,100);g.setColor(Color.GRAY);//2.填充一个椭圆g.fillOval(120,100,100,150);g.dispose();}*//***Invokedwhenthemousebuttonhasbeenclicked(pressed*andreleased)onacomponent.*/publicvoidmouseClicked(MouseEvente){intcountx=e.getX();intcounty=e.getY();intSize=40;//起始点为(100,100)//终止点为(500,500)//System.out.println(countx);//System.out.println(county);inta=0;intb=0;//这里是修改点击显示的位置,让最后得到的点在角落上for(inti=0;i<11;i++){if(countx>=(100+Size*i-(Size/2))&&countx<(100+Size*i+(Size/2))){a=100+Size*i;//System.out.println(a);}if(county>=(100+Size*i-(Size/2))&&county<(100+Size*i+(Size/2))){b=100+Size*i;//System.out.println(b);}}if(a!=0&&b!=0){intflag1=0;intflag2=0;flag1=(a-100)/Size;flag2=(b-100)/Size;if(chessboard[flag1][flag2]==0){//判断这个地方是否已经放置了一个点if(number==0){//绘制一个椭圆g.drawOval(a-Size/4,b-Size/4,Size/2,Size/2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上//填充一个椭圆g.setColor(Color.BLACK);g.fillOval(a-Size/4,b-Size/4,Size/2,Size/2);number++;}else{g.drawOval(a-Size/4,b-Size/4,Size/2,Size/2);//填充一个椭圆g.setColor(Color.WHITE);g.fillOval(a-Size/4,b-Size/4,Size/2,Size/2);number--;}chessboard[flag1][flag2]=1;//没放置,那么我们需要在放置后}else{System.out.println("此处已经放置了棋子");}}}/***Invokedwhenamousebuttonhasbeenpressedonacomponent.*///点击鼠标publicvoidmousePressed(MouseEvente){}/***Invokedwhenamousebuttonhasbeenreleasedonacomponent.*///释放鼠标publicvoidmouseReleased(MouseEvente){}/***Invokedwhenthemouseentersacomponent.*/publicvoidmouseEntered(MouseEvente){}/***Invokedwhenthemouseexitsacomponent.*/publicvoidmouseExited(MouseEvente){}}

上述内容就是java怎么实现简单五子棋小游戏,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

发布于 2022-01-10 23:48:11
收藏
分享
海报
0 条评论
31
上一篇:java实现五子棋小游戏的代码怎么写 下一篇:Java分形怎么绘制山脉模型
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码