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表示在左上角下一个棋子
井字过三关
这个游戏要想赢,只能借助对手失误。如果双方都没有失误,必定是平局。
分出了胜负时,仔细分析一下就知道输者有失误。
要是进行人机对战,只要电脑程序设计得好,那将是不可战胜的,最多打个平手。按你问题补充中的说法,你是想前三步都走角吧,如果你按这种方法跟我玩,前两步走角我拦不住你,但我可以让你第三步不能走角。如果你在第三步硬是要走角,那么你肯定会输给我的。