鱼C论坛

 找回密码
 立即注册
查看: 1476|回复: 3

[技术交流] 参照jerry大神的代码写了一个数字九宫格

[复制链接]
发表于 2018-2-28 19:26:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 JAY饭 于 2018-2-28 19:35 编辑

  很简陋 ,代码没什么值得学的,写的很乱,我花了时间最多的是布置界面

  1. import numpy as np

  2. def juzhen(n):
  3.     nine = [i for i in range(1,n**2)]
  4.     nine.append(' ')
  5.     return nine

  6. class Nine():
  7.     def __init__(self,nine,num):
  8.         self.nine = nine
  9.         self.num = num
  10.         self.sign = False
  11.         self.start = []
  12.         self.right = []
  13.         self.step = [[0,1],[1,0],[-1,0],[0,-1]]

  14.     def begin(self):
  15.         self.start = [[] for i in range(self.num)]
  16.         self.right = [[] for i in range(self.num)]
  17.         for i in range(self.num**2):
  18.             t = i//self.num
  19.             self.right[t].append(self.nine[i])
  20.             
  21.         np.random.shuffle(self.nine)

  22.         for k in range(self.num**2):
  23.             t = k//self.num
  24.             self.start[t].append(self.nine[k])

  25.     def rightway(self,i,j,x):
  26.         for k in self.step:
  27.             i1 = i+k[0]
  28.             j1 = j+k[1]
  29.             if 0<=i1<self.num and 0<=j1<self.num and self.start[i1][j1] == ' ':
  30.                 self.sign = True
  31.                 self.start[i1][j1] = x
  32.                 self.start[i][j] = ' '
  33.                 break

  34.     def move(self):
  35.         while True:
  36.             x = input('Move:')
  37.             while not x.isdigit():
  38.                 x = input('Move:')
  39.             x = int(x)
  40.             print()
  41.             if x == 0:
  42.                 break
  43.             self.sign = False
  44.             for i in range(self.num):
  45.                 for j in range(self.num):
  46.                     if self.start[i][j] == x:                    
  47.                         self.rightway(i,j,x)
  48.                         break
  49.                 if self.sign:
  50.                     break
  51.             if self.start == self.right:
  52.                 print('Win!')
  53.                 break
  54.             if not self.sign:
  55.                 print('w')
  56.                 print()
  57.             else:
  58.                 self.show()

  59.     def show(self):
  60.         print('   ┌'+' ─┬'*(self.num-1)+'─ ┐')
  61.         for i in range(self.num):
  62.             print(' &#9800;│',end='')
  63.             for j in self.start[i]:
  64.                 if len(str(j)) == 1:  
  65.                     print(j,' │',end='' )
  66.                 else:
  67.                     print(j,'│',end= '')
  68.             if i < (self.num-1):
  69.                 print()
  70.                 print('   ├'+' ─┬'*(self.num-1)+'─ ┤')
  71.             else:
  72.                 print()
  73.                 print('   └'+' ─┴'*(self.num-1)+'─ ┘')
  74.         print()

  75. def play(n):
  76.     nine = juzhen(n)
  77.     X = Nine(nine,n)
  78.     e = ''
  79.     while True:
  80.         X.begin()
  81.         print('移动:输入对应数字\n'
  82.               '退出:输入0')
  83.         print()
  84.         X.show()
  85.         X.move()
  86.         while e not in ['y','Y','n','N']:
  87.             e = input('是否离开游戏?是:Y或y, 否:N或者n :')
  88.         if e == 'Y' or e =='y':
  89.             break
  90.         else:
  91.             continue

  92. dict_m = {1:3, 2:4, 3:5}
  93. print('      数字-模式\n'
  94.       '简单:1  一般:2  困难:3\n')
  95. print()
  96. m = int(input('   &#65377;&#9685;&#7447;&#9685;&#65377; - biu :'))
  97. print('')
  98. n = dict_m[m]
  99. play(n)
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-28 19:27:51 | 显示全部楼层
本帖最后由 JAY饭 于 2018-2-28 19:38 编辑

界面更新了一下
1519817861(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 19:41:44 | 显示全部楼层
本帖最后由 JAY饭 于 2018-2-28 19:44 编辑

因为水平太弱,写的很繁琐,不符合python的简洁风格,希望大神能提些代码上的意见。当然新人有什么看不懂的想问都可以问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 20:54:37 | 显示全部楼层
挺好的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-23 18:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表