首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AI运动100%像C64上的游戏黑手党

AI运动100%像C64上的游戏黑手党
EN

Stack Overflow用户
提问于 2015-12-25 22:27:33
回答 1查看 230关注 0票数 2

从回答我的用户:更新链接到C#解决方案项目:移动

更新

我发现了它--如果有人感兴趣,只需使用C64 Forum:http://www.lemon64.com/forum/viewtopic.php?p=712902#712902中的线程链接,我就在这里讨论了这个主题(与我自己)。有趣的是它最终是多么的简单。不好笑,我花了两个多星期。

稍后,我将把基本内容发布到C#代码中,并“回答”我自己的问题。

如果有人关心并且不想去论坛链接,下面是如何在C64 basic中工作。

代码语言:javascript
复制
30110 IF KS(S)=0 THEN GOSUB 30400 : GOTO30105
30400 POKE 211,20: POKE214,18: SYS CS: PRINT"SPIELER"F
30405 Y=INT(KP(S,F)/40)
  SYS CR, KP(S,F)-40*Y, Y
  X=PEEK(UA)-1
  Y=PEEK(UA+1)-40
30410 IF PEEK(UA+2)=1 OR PEEK (UA+3)=1 GOTO 30420
30415 IFINT(RND(1)*2)=0ORGW(KS(S),F)<4GOTO30450
30420 IFX=0THENX=Y:GOTO30215
30421 IFY<>0GOTO30450
30425 GOTO30215
30450 IFX<>0ANDRI(F)<>(1+2*(X=1))THENP=X:GOSUB30490:IFP=0THENRETURN
30451 IFY<>0ANDRI(F)<>(40+80*(Y=1))THENP=Y:GOSUB30490:IFP=0THENRETURN
30455 IFX<>0ANDRI(F)<>(1+2*(X=1))GOTO30460
30456 IFRI(F)<>-1THENP=1:GOSUB30490:IFP=0THENRETURN
30457 IFRI(F)<>1THENP=-1:GOSUB30490:IFP=0THENRETURN
30458 GOTO30465
30460 IFY<>0ANDRI(F)<>(40+80*(Y=1))GOTO30465
30461 IFRI(F)<>-40THENP=40:GOSUB30490:IFP=0THENRETURN
30462 IFRI(F)<>40THENP=-40:GOSUB30490:IFP=0THENRETURN
30465 RETURN
30490 Q=KP(S,F)+P:IFQ<0ORQ>520OR(PEEK(BR+Q)<>32ANDPEEK(BR+Q
<>96)THENRETURN
30491 POKEBR+KP(S,F),32:KP(S,F)=Q:POKEBR+KP(S,F),193:POKEFR+KP(S,F),6
30492 RI(F)=P:P=0:RETURN

一些提示:

代码语言:javascript
复制
X = moved right (1), left (-1), up (-40) or down(40)
P = Position. There is no Y because the next/prev line is
40 characters away. (C64 Screen =  40 Columns and 25 Rows)
S = switches between 0 and 2 to determine if its human or ai turn
KP(S,F) = Offset-Position in Video-Memory-Adress
BR = Start-Adress of Video-Memory
32 = 0x20 = Space to clear old position
193 = Ascii-Character used as pawn for player and ai
6 = Mark field as AI (Human position is marked with 0x0b)
F = Playernumber
RI(F) = dont know yet

原题:

在重拍和试图理解C64代码的工作,我正在努力与AI运动。花了一个多星期的时间,我不能100%地复制相同的行为。

EN

回答 1

Stack Overflow用户

发布于 2015-12-30 12:19:59

要回答我的问题:是的,Ai可以随机使用RND,而我完全忽略了这一点。

关于深入的讨论,请访问论坛-线程

在那里,如果您想调试/反向工程一些东西,其他的绊脚石可能会有所帮助。

  • 我总是阅读基本代码,没有语法高亮显示和格式。通过这样做,我错过了一些事情并犯了错误。
  • 在屏幕内存中标记的位置
  • 位置,其中不是Point(x,y)array[x,y],而是表示c64屏幕的25行和40列的整数0-999。
  • 对于汇编程序部分,我是非常详细的。最好是一排排地查看5到10个命令,并考虑一下(不进行调试)会发生什么,而不是在调试时迷失在JSR中。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34466958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档