热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java编写井字棋

java编写井字棋我说下我的想法:看坐标:横坐标一致或纵坐标一致还有就是.\两种情况下固定的位置你事先固定好当三个点都有了棋子就一直线

java 编写井字棋

我说下我的想法: 看坐标: 横坐标一致 或纵坐标一致 还有就是/.\两种情况下 固定的位置你事先固定好 当三个点都有了棋子就一直线

用Java做井字棋游戏

以前写过一个java的井字棋 , 其中的重点是要判断每走一步后,是否有比赛的结果(输,赢,平) 可以使用swing 来作为外观进行显示. 表示棋盘如下 0 1 2 3 4 5 6 7 8 定义一个二维数组,每次走完后,匹配该数组, 如果匹配成功就赢了 int[][] WIN = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, { 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 8 }, { 0, 4, 8 }, { 2, 4, 6 } }; 效果图 当然了,因为井字棋比较简单, 可以写一个比较简单的判断局势,然后自动下棋的AI . (AI使用了很多的if else判断, 比如人现在的情况是什么样的,有几个棋子连在一起了,电脑自己的情况是怎么样的)

用VB做井字过三关中的一个问题

按你这样写的话,你有想过有多少组可以进行胜利呢??横的,竖的,斜的,而你这这样的话只有一种情况.?而且你的代码有错.【设计思路】 首先,我们要知道,“井字棋”游戏是一款典型的棋类游戏,游戏时一方式是电脑,另一方是玩家。所以,这类游戏在开始时有两种方式:一种是玩家先走;另一种是电脑先走。

这是我们要考虑的第一个问题。

其次,由于与玩家对战的是计算机,所以我们要编写一个过程(出棋),它可以使程序模拟人的思维与人下棋(其实就是“人工智能”的体现),这个Chuqi过程也是本游戏软件的关键。此外,我们还要编写两个过程(连线和输赢),连线过程用来时刻判断棋盘中是否有三个棋子连成一线;输赢过程用来判断如果有三个棋子连成一线,是哪一方连成一线的,即判断哪一方获胜。 以上几个问题就是该“井字棋”游戏实现的关键思路定义棋盘格子数据结构Private Type Wells Wells_X As Long Wells_Y As Long Wells_Value As IntegerEnd Type 定义棋盘格子的实例数组Private usrWells(1 To 9) As Wells 定义响应点击操作的逻辑棋盘格子代号数组Private intWellsIndex(1 To 3, 1 To 3) As Integer 定义玩家的玩过的盘数和积分Private lngPlayerTurn As Integer, lngPlayerScore As Long定义游戏开始标志Private blnGameStart As Boolean定义玩家胜利和失败标志Private blnPlayerWin As Boolean, blnPlayerLost As Boolean定义枚举常量标识玩家类型Private Enum Player MAN = 0 COMPUTER = 1End Enum该过程用于显示游戏信息Private Sub Form_Load() Me.Show Me.Caption = "BS井字游戏 — (版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")"End Sub该过程用于重新开始开始游戏Private Sub cmdGameStart_Click() blnGameStart = True lngPlayerTurn = lngPlayerTurn + 1 Me.picWells.Cls Call subGameInitialize Call subScreenRefreshEnd Sub该过程用于显示游戏规则Private Sub CmdGameRules_Click() Beep MsgBox " BS井字游戏:一个最简单的智力游戏,您将与机" & Chr(13) & _ "器在9个格子大小的棋盘上一决高下。由您先开始" & Chr(13) & _ "和机器轮流,每次在任意的空格上下一枚棋子。

pascal 井字过三关

双人的 const st:array['1'..'2']of string=('Player1 win!!!', 'Player2 win!!!');var map:array[1..3,1..3]of char; x,y:longint;procedure print;var i,j:longint;begin for i:=1 to 100 do writeln; for i:=1 to 3 do begin for j:=1 to 3 do write(map[i,j]); writeln; end;end;procedure check;begin if (map[1,1]=map[1,2])and(map[1,1]=map[1,3])and(map[1,1]<>'*') then begin print;writeln(st[map[1,1]]);readln;halt;end; if (map[2,1]=map[2,2])and(map[2,1]=map[2,3])and(map[2,1]<>'*') then begin print;writeln(st[map[2,1]]);readln;halt;end; if (map[3,1]=map[3,2])and(map[3,1]=map[3,3])and(map[3,1]<>'*') then begin print;writeln(st[map[3,1]]);readln;halt;end; if (map[1,1]=map[2,1])and(map[1,1]=map[3,1])and(map[1,1]<>'*') then begin print;writeln(st[map[1,1]]);readln;halt;end; if (map[1,2]=map[2,2])and(map[1,2]=map[3,2])and(map[1,2]<>'*') then begin print;writeln(st[map[1,2]]);readln;halt;end; if (map[1,3]=map[2,3])and(map[1,3]=map[3,3])and(map[1,3]<>'*') then begin print;writeln(st[map[1,3]]);readln;halt;end; if (map[1,1]=map[2,2])and(map[1,1]=map[3,3])and(map[1,1]<>'*') then begin print;writeln(st[map[1,1]]);readln;halt;end; if (map[3,1]=map[2,2])and(map[3,1]=map[1,3])and(map[3,1]<>'*') then begin print;writeln(st[map[3,1]]);readln;halt;end;end;begin writeln('####jing zi guo san guan####'); readln; fillchar(map,sizeof(map),'*'); repeat repeat print; write('Player1:'); readln(x,y); if map[x,y]<>'*' then begin writeln('You can not put it there!Put again!');readln;end; until map[x,y]='*'; map[x,y]:='1'; check; repeat print; write('Player2:'); readln(x,y); if map[x,y]<>'*' then begin writeln('You can not put it there!Put again!');readln;end; until map[x,y]='*'; map[x,y]:='2'; check; until 1=2;end.介绍:输入你要下的坐标.如1 1表示在左上角下一个棋子

井字过三关

这个游戏要想赢,只能借助对手失误。如果双方都没有失误,必定是平局。

分出了胜负时,仔细分析一下就知道输者有失误。

要是进行人机对战,只要电脑程序设计得好,那将是不可战胜的,最多打个平手。按你问题补充中的说法,你是想前三步都走角吧,如果你按这种方法跟我玩,前两步走角我拦不住你,但我可以让你第三步不能走角。如果你在第三步硬是要走角,那么你肯定会输给我的。


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
author-avatar
手机用户2502856053
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有