简易五子棋
10 GRAPH:CLS:FOR X= 4 TO 148 STEP 8: FOR Y=4 TO 68 STEP 8: BOX X,Y,X+8,Y+8: NEXT:NEXT
20 A=1:X=76:Y=44 :B=0
30 X=X+160*(X〈 4)-160*(X〉156):Y=Y+80*( Y〈 4 )-80*(Y〉76)
40 BOX X-4,Y-4,X+4,Y+4,1,2:M=ASC(INKEY$):BOX X-4,Y-4,X+4,Y+4,1,2
50 Y=Y-8*(M=20)+8*(M=21):X=X+8*(M=22)-8*(M=23) :IF M=29 GOTO 10
60 IF M=13 AND PEEK(20*Y+(X-4)/8+2436)<>62 GOTO 100
70 IF M=31 AND B=1 THEN CIRCLE W,V,3,1,0 : LINE W-4,V,W+4,V : LINE W,V-4,W,V+4:A=(A=0) :B=0
80 IF M=27 THEN CLS:LOCATE 3 ,9 : PRINT“退出”: END
90 GOTO 30
100 CIRCLE X,Y,3,A,1 :CIRCLE X,Y,2,1,A :W=X:V=Y:B=1
110 Z=65+62*A:K$(1)=“白棋”:K$(2)=“黑棋”:P=0:Q=0:R=0:S=0:FOR L=-32 TO 32 STEP +8
120 E=(PEEK(20*(Y+L)+(X+L-4)/8+2536)=Z):F=(PEEK(20*(Y-L)+(X+L-4)/8+2536)=Z)
130 G=(PEEK(20*Y+(X+L-4)/8+2536)=Z):H=(PEEK(20*(Y+L)+(X-4)/8+2536)=Z)
140 P=E*(P+E):Q=F*(Q+F):R=G*(R+G):S=H*(S+H)
150 IF P=5 OR Q=5 OR R=5 OR S=5 THEN CLS:LOCATE 3 ,6: PRINT K$(A+1);“胜啦!”:END
160 NEXT:A=(A=0):GOTO 30
解释:
10 画棋盘
20 赋予各数初始值
30 使光标到了屏幕边界后能循环到另一边
40 画光标,读键,反显消除上次画的光标
50 方向键,光标坐标移8点。F2键,回到10句的CLS(清屏)。
60 输入键,PEEK(20*Y+(X-4)/8+2496-60)不等于0+0+32+16+8+4+2+0=62表示该棋位没有棋。(此为NC1020型,其它型的把2496改成相应型显存的第一个PEEK值)
70 F4键,把所下棋空白掉,LINE是把空白掉的棋盘补好。
80 跳出键,END结束程序。M=等于的数就是各键所对应的ASCII码,修改它,就可用其它键控制。
90 重复读键。
100 画棋子。
110---150 判断胜负。PEEK(20*Y+(X-4)/8+2496+40)等于0+64+32+16+8+4+2+1=127表示X,Y(或X+L,Y+L)棋位棋有黑棋,PEEK值等于0+64+0+0+0+0+0+1=65表示有白棋,PEEK值等于0+0+0+0+8+0+0+0=8(在顶上一横格时等于0)表示没有棋。知道这个原理,加个禁手,自已应该可以解决了。(此为NC1020型,其它型的把2496改成相应显存的第一个PEEK值)。
160 A=(A=0)使A的值反复0和1,这样就会交替出现黑棋和白棋。
如需转帖,请注名原作者:o_o
若要加存档功能,把:
80 IF M=27 THEN CLS:LOCATE 3 ,9 : PRINT“退出”:END
改成:
80 IF M=27 THEN 170
然后在10句前面加:
9 PRINT “档中存有棋局,是否继续?”:LOCATE 3,8:“Y是/N否”:M=ASC(INKEY$)
在10句后加:
11 DIM D(200):IF M<>121 GOTO 20
12 OPEN “DANG”FOR INPUT AS #1:WRITE #1,A,P$
:FOR X=4 TO 156 STEP 8:FOR Y=4 TO 76 STEP 8
13 INPUT #1,D,P$:IF D=127 THEN CIRCLE X,Y,4,1,1
14 IF D=65 THEN CIRCLE X,Y,3,1,0:CIRCLE X,Y,4
15 NEXT:NEXT:CLOSE #1:X=76,Y=44:GOTO 30
在程序后面加:
170 FOR X= 1 TO 20 : FOR Y=1 TO 10 :W=W+1: D(W)=PEEK(160*Y+X+2455):NEXT:NEXT
180 CLS:PRINT “未下完,是否存档?”:LOCATE 3,8:PRINT“Y是/N否”
190 M=ASC(INKEY$):IF M<>121 GOTO 220
200 CLS:LOCATE 3,5:PRINT“正在存档...”
200 OPEN “DANG”FOR OUTPUT AS #1:WRITE #1,A,“,”:FOR W=1 TO 200:WRITE #1,D(W),“,”
210 NEXT:CLOSE #1:CLS:LOCATE 3,6:PRINT“存档成功!”:INKEY$
220 CLS:LOCATE 3,4:PRINT“欢迎下次再来!” END
加完后,第一次运行,应在出现“档中存有棋局,是否继续?”时不要按Y键按其它键,而在出现“未下完,是否存档?”时按Y键。这样就会生成一个“DANG”的DAT数据文件。
用这种顺序存贮是比较慢的,如果用批量法要快得多。
分享到:
相关推荐
使用HTML5的canvas制作的非人机的简易五子棋使用HTML5的canvas制作的非人机的简易五子棋使用HTML5的canvas制作的非人机的简易五子棋使用HTML5的canvas制作的非人机的简易五子棋
java程序设计课程作业 简易五子棋实现 附上文档
c++简易五子棋代码
通过学习实现的一个简易五子棋小游戏,主要学习Android中自定义View相关知识。
java实现五子棋,用于课程设计,按钮可能有些不习惯,这是为了验证更多的函数和方法。
js-简易五子棋游戏,基于h5和js 的无聊产物,(五十个字)
易语言源码易语言简易五子棋源码.rar 易语言源码易语言简易五子棋源码.rar 易语言源码易语言简易五子棋源码.rar 易语言源码易语言简易五子棋源码.rar 易语言源码易语言简易五子棋源码.rar 易语言源码易语言简易...
一个简单的五子棋程序 一个简单的人工智能算法
C++Builder 简易五子棋
通过学习实现的一个简易五子棋小游戏,主要学习Android中自定义View相关知识 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
易语言简易五子棋源码,简易五子棋,载入棋盘,下棋,计算是否胜利
易语言简易五子棋源码.zip易语言项目例子源码下载易语言简易五子棋源码.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考
山东大学数据结构课设,简易五子棋,包含代码和实验报告,C++、MFC
C语言编写的简易五子棋程序,内附简易操作规则,适合初学者学习和使用。学习C语言程序代码能够在VC 6.0或者更高版本的运行环境下运行。
简易的五子棋qt creator 实现,可在此基础之上实现五子棋算法。
C#编的一个简易五子棋,比较简单,感兴趣的可以看一下。
qt 简易五子棋
QT实现简易五子棋源码