鱼C论坛

 找回密码
 立即注册
楼主: jerryxjr1220

[技术交流] python小练习(024):用python编写小游戏2048

  [复制链接]
发表于 2018-1-27 19:35:48 From FishC Mobile | 显示全部楼层
.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-28 08:18:14 | 显示全部楼层
jerryxjr1220 发表于 2018-1-27 17:35
大部分人都不会仔细去看的,觉得好玩直接拿来用用,用完就扔了,对自己的编程水平是没任何提高的。
你 ...

谈不上自己写,还是按你的思路,自己写了一遍,获益匪浅,稍微简化了下布局
  1. import numpy as np
  2. import os
  3. import random
  4. class game2048:
  5.     def __init__(self):
  6.         self.t1 = np.array([[0]*4 for i in range(4)])
  7.         self.list1 = [[0]*4 for i in range(4)]
  8.     def show(self):
  9.         
  10.         for i in range(4):
  11.             for j in range(4):
  12.                 if self.t1[i][j] == 0:
  13.                     self.list1[i][j] = ' '*6
  14.                 else:
  15.                     self.list1[i][j] = self.t1[i][j]

  16.         count = 0
  17.         for i in range(21):
  18.             if i%5 == 0:
  19.                 print('-'*32)
  20.             elif i%5 == 2:
  21.                 for j in range(4):
  22.                     print('| '+str(self.list1[count][j])+' '*(6-len(str(self.list1[count][j]))),end='')
  23.                 print('|')
  24.                 count += 1
  25.                      
  26.             else:
  27.                 print('|','      | '*4)

  28.     def bottom_up(self):
  29.         self.t1 = self.t1.transpose()

  30.     def reverse(self):
  31.         for i in range(4):
  32.             self.t1[i] = self.t1[i][::-1]
  33.     def right(self):
  34.         for i in range(4):
  35.             for k in range(4):
  36.                 for j in range(3):
  37.                     if self.t1[i][j] == self.t1[i][j+1]:
  38.                         self.t1[i][j+1] += self.t1[i][j]
  39.                         self.t1[i][j] = 0
  40.                     if self.t1[i][j+1] == 0:
  41.                         self.t1[i][j+1] = self.t1[i][j]
  42.                         self.t1[i][j] = 0
  43.     def left(self):
  44.         self.reverse()
  45.         self.right()
  46.         self.reverse()

  47.     def down(self):
  48.         self.bottom_up()
  49.         self.right()
  50.         self.bottom_up()

  51.     def up(self):
  52.         self.bottom_up()
  53.         self.reverse()
  54.         self.right()
  55.         self.reverse()
  56.         self.bottom_up()

  57.     def creat(self):
  58.         kongbai = []
  59.         for i in range(4):
  60.             for j in range(4):
  61.                 if self.t1[i][j] ==0:
  62.                     kongbai.append((i,j))
  63.         if len(kongbai):
  64.             (a,b) = random.choice(kongbai)
  65.             self.t1[a][b] = random.choice([2,4])
  66.         else:
  67.             self.gameover()

  68.     def gameover(self):
  69.         self.show()
  70.         print('你输咯')
  71.         input()

  72.     def win(self):
  73.         self.show()
  74.         print('你赢了,呵呵,呵呵')
  75.         input()

  76.     def check(self):
  77.         for i in range(4):
  78.             for j in range(4):
  79.                 if self.t1[i][j] ==2048:
  80.                     self.win()

  81.     def move(self):
  82.         print('w 上移,a左移,s下移,d右移,')
  83.         step = input('。◕ᴗ◕。◞✺')
  84.         if step == ('w' or 'W'):
  85.             self.up()
  86.         elif step == ('a' or 'A'):
  87.             self.left()
  88.         elif step == ('s' or 'S'):
  89.             self.down()
  90.         elif step == ('d' or 'D'):
  91.             self.right()
  92.         else:
  93.             print('输入错误')
  94.             move()

  95. if __name__ == '__main__':
  96.     game = game2048()
  97.     game.creat()
  98.     game.creat()
  99.     game.show()
  100.     while True:
  101.         game.move()
  102.         game.check()
  103.         game.creat()
  104.         game.show()
  105.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-19 17:44:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2018-2-22 16:50:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-22 17:00:52 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-12 10:53:57 From FishC Mobile | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-13 18:42:50 | 显示全部楼层
学习!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-13 19:52:28 | 显示全部楼层
思路很重要,看看框架怎么样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 16:09:52 | 显示全部楼层
学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 21:25:08 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-26 11:18:25 | 显示全部楼层
谢谢,学习看看代码~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 19:06:42 From FishC Mobile | 显示全部楼层
看看j
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 21:28:56 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-16 22:10:05 | 显示全部楼层
kankan
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-19 14:43:32 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-21 22:07:44 | 显示全部楼层
滋瓷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-22 01:05:25 | 显示全部楼层
回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-22 09:14:11 | 显示全部楼层
想看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-22 11:14:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 12:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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