此作者是一个刚学python一年的弱鸡,尝试性发出的第一篇文章,他甚至懒得用GUI做这个游戏,他非常清楚的知道这个游戏有许多的弱点(比如在加入getch()和clear()函数时他发现自己用的屑pycharm根本没法安装,希望哪位路过的大佬指点一下迷津)。
首先展示一下整个游戏的代码,简单易懂,只有80多行(连这个80十多行也是凑出来,加几个自定义函数,再去掉无聊时加上的用于嘲讽玩家的代码瞬间就缩水了,但是我已经懒得改了)
import random
import time
width=6
lenth=6
env=[]
for i in range(0,width):
env.append([])
for n in range(0,lenth):
env[i].append(random.randint(1,9))
times=0
while 1:
while 1:
ord=[random.randint(0,width-1),random.randint(0,lenth-1)]
if env[ord[0]][ord[1]]!=0:
break
re_ord=[ord[1]+1,ord[0]+1]
for i in range(0,len(env)):
temp = ''
for n in range(0,len(env[i])):
if [i,n]!=ord:
temp+=' {} '.format(env[i][n])
else:
temp += '?{}?'.format(env[i][n])
print(temp)
print('the ordinate is {}'.format(re_ord))
choice=input()
if choice =='d':
env[ord[0]][ord[1]]+=1
if choice =='a':
env[ord[0]][ord[1]]-=1
if choice =='w':
env[ord[0]][ord[1]]*=2
if choice =='s':
env[ord[0]][ord[1]]=env[ord[0]][ord[1]]//2
for i in range(0,len(env)):
for n in range(0,len(env[i])):
if n+2=0 and env[i][n]==env[i][n-1] and env[i][n]==env[i][n-2]:
env[i][n] = 0
env[i][n-1] = 0
env[i][n-2] = 0
if i+2=0 and env[i][n]==env[i-1][n] and env[i][n]==env[i-2][n]:
env[i][n] = 0
env[i-1][n] = 0
env[i-2][n] = 0
if i-2>=0 and n-2>=0 and env[i][n]==env[i-1][n-1] and env[i][n]==env[i-2][n-2]:
env[i][n] = 0
env[i-1][n-1] = 0
env[i-2][n-2] = 0
if i-2>=0 and n+2=0 and env[i][n]==env[i+1][n-1] and env[i][n]==env[i+2][n-2]:
env[i][n] = 0
env[i+1][n-1] = 0
env[i+2][n-2] = 0
if i+2
游戏规则是有一面随机生成的数字墙,每一轮会随机选定一个数字,按w选定数字*2,s整除2,d加一,a减一,像五子棋一样,有三个一样的数字就归零,要在45部内将所有数字归零才算成功(45大概是我的最高纪录)。
这个游戏唯一的亮点就是在做策略的时候遇到一个数,你可以选择连成一列一起归零,也可以选择整除几次归一后再减一归零,毕竟你也不知道什么时候会随机选定到这个数的周围。
由于上述的特性,假如我需要训练一个强化学习的AI,即使这个AI的参数很完美,他依旧可能因为随机的误差性导致判断失误,如果重复实验(为什么有点像初中物理了),也需要判断是否值得重复(如果全部重复可能会导致CPU不堪重负)。所以这似乎也会是发展方向呢。



