安卓做的棋类游戏

article/2025/9/20 15:56:27

大方大斜

  • 前言
  • 一、直接上图
  • 二、游戏主要代码
    • 1.界面绘制代码
    • 2.游戏触摸事件代码
  • 最后


前言

安卓制作棋类游戏,小时候和发小在地上画棋盘,有树叶或者树枝做棋子。

一、直接上图

主页面
单人
双人

二、游戏主要代码

1.界面绘制代码

双人界面绘制,主要代码代码如下(示例):

private void redraw() {Canvas mCanvas = surfaceHolder.lockCanvas();if(steps>3){steps=3;}//背景background.setBounds(0,0,(int)WIDTH,(int)HEIGHT);background.draw(mCanvas);//蓝方认输按钮btn_blue_fail.setBounds((int) blue_fail_minX, (int) blue_fail_minY,(int)blue_fail_maxX,(int) blue_fail_maxY);btn_blue_fail.draw(mCanvas);//红方认输按钮btn_red_fail.setBounds((int)red_fail_minX,(int)red_fail_minY,(int)red_fail_maxX,(int)red_fail_maxY);btn_red_fail.draw(mCanvas);Paint paint=new Paint();paint.setColor(Color.BLACK);paint.setStrokeWidth(3);for(int i=0;i<ROW;i++){for(int j=0;j<COL;j++){//横线mCanvas.drawLine(DistanceLeft,j*Spacing+DistanceTop,length+DistanceLeft,j*Spacing+DistanceTop,paint);//竖线mCanvas.drawLine(i*Spacing+DistanceLeft,DistanceTop,i*Spacing+DistanceLeft,DistanceTop+length,paint);Paint paint1=new Paint();paint1.setTextSize(55f);if(play==0){paint1.setARGB(240,188,43,63);mCanvas.drawText("红方"+steps+"步",DistanceLeft+Spacing*3/2,DistanceTop+length+Spacing,paint1);mCanvas.drawCircle(DistanceLeft+Spacing,DistanceTop+length+Spacing,50,paint1);if(RewardSteps!=0){mCanvas.drawText("红方奖励"+RewardSteps+"步",DistanceLeft+Spacing*3/2,DistanceTop+length+Spacing*3/2,paint1);}}else if(play==1){paint1.setARGB(240,0,150,136);xSteps=(int) (DistanceLeft+length-Spacing*23/8);ySteps=(int) (DistanceTop-Spacing*2/3);switch (steps){case 1:blue_1.setBounds( xSteps,ySteps, (int) (xSteps+Spacing),ySteps+55);blue_1.draw(mCanvas);break;case 2:blue_2.setBounds( xSteps,ySteps, (int) (xSteps+Spacing),ySteps+55);blue_2.draw(mCanvas);break;case 3:blue_3.setBounds( xSteps,ySteps, (int) (xSteps+Spacing),ySteps+55);blue_3.draw(mCanvas);break;}mCanvas.drawCircle(DistanceLeft+length-Spacing,DistanceTop-Spacing,50,paint1);if(RewardSteps!=0){xSteps=  (int)(DistanceLeft+length-Spacing*23/8);ySteps= (int)(DistanceTop-Spacing);switch (RewardSteps){case 1:add_blue_1.setBounds(xSteps,ySteps, (int) (xSteps+Spacing*5/4),ySteps+55);add_blue_1.draw(mCanvas);break;case 2:add_blue_2.setBounds(xSteps,ySteps, (int) (xSteps+3*Spacing/2),ySteps+55);add_blue_2.draw(mCanvas);break;case 3:add_blue_3.setBounds(xSteps,ySteps, (int) (xSteps+3*Spacing/2),ySteps+55);add_blue_3.draw(mCanvas);break;}}}}}int size=touchXYList.size();if(size>0) {for(int i=0;i<size;i++){int k=i;if(k+1==size){mCanvas =drawPiece.draw(mCanvas,startPoint,Spacing,touchXYList.get(i),1);}else {mCanvas =drawPiece.draw(mCanvas,startPoint,Spacing,touchXYList.get(i),-1);}}}if (mCanvas != null){//释放canvas对象并提交画布surfaceHolder.unlockCanvasAndPost(mCanvas);}}

2.游戏触摸事件代码

点击坐标处理处代码如下(示例):

private Point getFormat(float x,float y) {float tempX = -1;float tempY = -1;if(x> minX&&x<maxX &&y>minY &&y<maxY) {for (float X : XList) {if (x >= X - ValidClickAreaLength && x < X + ValidClickAreaLength) {tempX = X;}}for (float Y : YList) {if (y >= Y - ValidClickAreaLength && y < Y + ValidClickAreaLength) {tempY = Y;}}}return new Point(tempX,tempY);}

代码浅显易懂,就不具体说明了

双人游戏点击事件处理 代码如下(示例):

 public boolean onTouch(View v, MotionEvent event) {float x=event.getX();float y=event.getY();if(event.getAction()==MotionEvent.ACTION_DOWN){mSoundPool.start(0);return true;}if (event.getAction()==MotionEvent.ACTION_UP){if(x> minX&&x<maxX &&y>minY &&y<maxY){Point tempPoint = getFormat(x, y);if(tempPoint.x!=-1&&tempPoint.y!=-1){Point newpoint= new Point((tempPoint.x-startPoint.x)/Spacing,(tempPoint.y-startPoint.y)/Spacing);TouchXY touchXY = new TouchXY(newpoint, play);if(!TouchList.Contains(touchXYList,newpoint)){touchXYList.add(touchXY);steps--;//初始化奖励步数RewardSteps=0;//判断是否符合加步数条件ConditionalJudgment cj=new ConditionalJudgment(newpoint,touchXYList,play,0);if(cj.getSteps()>0){steps+=cj.getSteps();mSoundPool.start(1);}RewardSteps=cj.getSteps();play= changePiece.getChange(steps,play);if(steps==0){steps=1;}int WINCODE=JudgmentWin.JudgmentWin(touchXYList);if(WINCODE> WINSTATUS.NO_END){mDialog mDialog=new mDialog(context,WINCODE);mDialog.DialogShow();initGame();}new Thread(this::run).start();}else{Toast.makeText(context,"这个地方已经由棋子了",Toast.LENGTH_SHORT).show();}}else {Toast.makeText(context,"棋子要下在交点上",Toast.LENGTH_SHORT).show();}}else {if(x>=red_fail_minX&&x<=red_fail_maxX && y>=red_fail_minY && y<=red_fail_maxY){mDialog mDialog=new mDialog(context,WINSTATUS.BLUE_WIN);mDialog.DialogShow();initGame();new Thread(this::run).start();}else if(x>blue_fail_minX && x<=blue_fail_maxX && y>=blue_fail_minY && y<=blue_fail_maxY) {mDialog mDialog = new mDialog(context, WINSTATUS.RED_WIN);mDialog.DialogShow();initGame();new Thread(this::run).start();}else {Toast.makeText(context,"请点击棋盘内",Toast.LENGTH_SHORT).show();}}}return true;}

最后

制作棋类游戏最难的就是Ai算法,让电脑厉害一点点,完整源码[gitee地址]。第一次写这个,没有过多介绍代码思路,主要是因为,源码一看就能懂,写的比较简单。(https://gitee.com/liuyixuan51122/Game_DaFangDaXie.git)


http://chatgpt.dhexx.cn/article/DKhOSHBK.shtml

相关文章

基于java的五子棋游戏设计

技术&#xff1a;Java、JSP等摘要&#xff1a;随着互联网迅速的发展&#xff0c;网络游戏已经成为人们普遍生活中不可或缺的一部分&#xff0c;它不仅能使人娱乐&#xff0c;也能够开发人的智力&#xff0c;就像本文所主要讲的五子棋游戏一样能挖掘人们聪明的才干与脑袋的机灵程…

自己设计的棋类游戏

1、构思&#xff1a; 象棋、国际象棋、井字棋等 我一开始的设计是这个样的&#xff1a;一个5x5的棋盘&#xff08;之后变成7x7&#xff09;&#xff0c;所有棋子摆成一个井字 棋子有两种&#xff0c;一种兵一种王&#xff0c;中间用中立的棋子&#xff0c;就叫box来隔开他们 …

Java围棋游戏的设计与实现

技术&#xff1a;Java等 摘要&#xff1a; 围棋作为一个棋类竞技运动&#xff0c;在民间十分流行&#xff0c;为了熟悉五子棋规则及技巧&#xff0c;以及研究简单的人工智能&#xff0c;决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为…

【国际象棋】棋盘游戏-微信小程序开发流程详解

与中国象棋类似的&#xff0c;还有国际象棋&#xff0c;知道有人爱玩&#xff0c;于是凭着好奇心&#xff0c;网上研究了一下&#xff0c;跟中国象棋有相似之处&#xff0c;玩法是有些许不一样&#xff0c;不知道象棋最早出于谁之手呢&#xff0c;抽空做一做&#xff0c;最终完…

利用C语言巧妙实现棋类游戏——三子棋

小游戏&#xff1a;三子棋用C语言实现 你是否学完了C语言的函数、数组、选择结构、循环结构苦于没有实战小项目巩固自己所学的知识呢&#xff0c;今天小程序猿就给大家带来了一个游戏的小游戏——三子棋&#xff0c;利用C语言实现的&#xff0c;希望对大家能有所帮助。 我们大家…

基于C#的五子棋游戏设计

目 录 一、 毕业设计内容 3 二、 毕业设计目的 3 三、 工具/准备工作 3 四、 设计步骤和方法 3 &#xff08;一&#xff09; 总体设计 3 1&#xff0e; 总体设计思路及设计图 3 2&#xff0e; 界面设计 4 3&#xff0e; 全局变量设计 4 &#xff08;二&#xff09; 详细设计 5 …

【Unity连载】斗兽棋-棋类游戏开发演示(2)

第四章 游戏操作与指令 如同养育一个婴儿&#xff0c;父母总会一步步引领孩子成长&#xff0c;从蹒跚学步到来去如风&#xff1b;我们对游戏功能的开发&#xff0c;也无疑应当从走出第一步棋开始。现在&#xff0c;我们已经构建出了棋盘、棋子等基本的游戏逻辑对象&#xff1b…

Java游戏开发——中国象棋联机版

游戏介绍&#xff1a; 中国象棋是起源于中国的一种棋戏&#xff0c;属于二人对抗性游戏的一种&#xff0c;在中国有着悠久的历史。由于规则简单&#xff0c;趣味性强&#xff0c;成为流行极为广泛的棋类游戏。 中国象棋使用方形格状棋盘及红黑二色圆形棋子进行对弈&#xff0c…

【论文】word中三线表的快速简单制作

【论文】word中三线表的快速简单制作 首先&#xff0c;打开word点击插入→表格&#xff0c;选择需要插入表格的行列数&#xff0c;行列数没有关系&#xff0c;因为你插入后可以随意添加行列。 则插入了一下表格&#xff1a; 把你所需要的数据放进去&#xff1a; 之后&#…

如何在word中制作线宽不同的三线表

在word中难免会插入特定的三线表&#xff0c;那就现场给给大家演示一遍 1、打开word&#xff0c;点击插入&#xff0c;点击表格&#xff0c;至于插入几行几列看自己的需求哈。 2、右键点击表格&#xff0c;然后点击表格属性 3、点击边框和底纹&#xff0c;对表格去除相关边线 …

论文中的三线表绘制(word)

步骤 1、选中表格&#xff08;点击下图中的红框部分选中&#xff09; 2、右击表格选择“表格属性” 3、点击边框和底纹&#xff0c;再选择无边框&#xff08;先不要点确定&#xff09; 4、设置三线表的上下边框&#xff08;1.5磅&#xff09;&#xff0c;完成下图之后点击确定-…

word三线表标题两条线之间如何出现空白间隔(论文必备)

为了写论文&#xff0c;我需要把以上的标题转换成下图所示的样子 所实现的步骤如下&#xff1a; 1、把标题内容回车 放在下一行 2、加一条绘制表格的线 3、选中第一行对应位置的两格&#xff0c;合并单元格 并填入内容 可以看到单纯的加上边框&#xff0c;两条线之间是没有空…

Word 2016表格三线表制作

1、打开word&#xff0c;点击插入&#xff0c;插入一个表格。 2、选中表格&#xff0c;点击设计&#xff0c;在边框中的笔画粗细选择1.5磅&#xff0c;然后在边框下拉框先选择无框线&#xff0c;再选择上框线和下框线。然后笔画粗细选择0.5磅&#xff0c;选中第一行后&#x…

三线表的制作

目录 前言参考过程 前言 最近在写些东西的时候&#xff0c;需要用到三线表&#xff0c;上网查了一下&#xff0c;将方法记录下来。 参考 三分钟快速制作论文三线表 过程 (1) 先插入一个表格&#xff0c;然后新建一个表格样式 (2) 如下图所示更改 (3) 点击第二步中的格式&a…

word表格跨页多出一根线(三线表)

在word中做三线表&#xff0c;表格跨页了自动在页底部加一横线&#xff0c;下一页页首加一横线这个怎么去掉么 首先感谢上方在知乎给出解决方案的博主&#xff0c; 接着&#xff1a;文中描述大概操作如下&#xff1a; 如果还是不行&#xff0c;那么就拿来dou一个三线表

Word插入三线表

在Word中插入一个三线表&#xff0c;方法如下所示&#xff1a; 一、先插入一个正常的表格&#xff0c;并输入好相应的数据 二、单击表格的左上角按钮&#xff0c;选中整个表格 选中表格之后&#xff0c;【右键】-【表格属性】&#xff0c;在弹出的表格属性对话框中单击【边框与…

在Word文档中插入三线表

在Word文档中插入三线表 ①插入一个适合你的文字安排的表格 例如&#xff0c;我要如下情况的示例; 则插入一个五行两列的表格并输入数据; 输完数据之后可以全选表格设置字体 全选表格——边框——边框和底纹&#xff1a; 然后按照下列设置&#xff1a; 结果如下; 然后再…

word 三线表 中间辅助线即行线如何断开?

达到如下图的目的&#xff1a; http://www.dxy.cn/bbs/topic/20891892#opennewwindow http://muchong.com/t-4447061-1 总而言之&#xff0c;最简单易行的方法就是多插入一列&#xff0c;然后去掉该列的边框即可&#xff01;

新建论文三线表模板,一键格式刷

论文三线表模板 写在最前面①表设计&#xff0c;新建表格样式②三线表上下线③三线表标题线④设置表格居中⑤设置表头格式容易出错的步骤 写在最前面 论文写完啦&#xff0c;准备调整格式 之前建模也是三线表&#xff0c;但只能基于该文档模板&#xff0c;所以重新设置一下。 …

针对跨页三线表,在Word2016及以上版本中设置表标题和表头在下一页重复以及解决表格跨页处没有下框线的问题

一、在Word2016及以上版本中设置表标题和表头在下一页重复 技巧1&#xff1a;把标题写在表格里&#xff0c;而不是把标题写在表格外&#xff0c;这样表标题也可以跨页重复啦 操作1&#xff1a;选中上述前两行——右击鼠标——选择“表格属性”——选择“行”——勾选“在各页顶…