鱼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
大部分人都不会仔细去看的,觉得好玩直接拿来用用,用完就扔了,对自己的编程水平是没任何提高的。
你 ...

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

        count = 0
        for i in range(21):
            if i%5 == 0:
                print('-'*32)
            elif i%5 == 2:
                for j in range(4):
                    print('| '+str(self.list1[count][j])+' '*(6-len(str(self.list1[count][j]))),end='')
                print('|')
                count += 1
                      
            else:
                print('|','      | '*4)

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

    def reverse(self):
        for i in range(4):
            self.t1[i] = self.t1[i][::-1]
    def right(self):
        for i in range(4):
            for k in range(4):
                for j in range(3):
                    if self.t1[i][j] == self.t1[i][j+1]:
                        self.t1[i][j+1] += self.t1[i][j]
                        self.t1[i][j] = 0
                    if self.t1[i][j+1] == 0:
                        self.t1[i][j+1] = self.t1[i][j]
                        self.t1[i][j] = 0
    def left(self):
        self.reverse()
        self.right()
        self.reverse()

    def down(self):
        self.bottom_up()
        self.right()
        self.bottom_up()

    def up(self):
        self.bottom_up()
        self.reverse()
        self.right()
        self.reverse()
        self.bottom_up()

    def creat(self):
        kongbai = []
        for i in range(4):
            for j in range(4):
                if self.t1[i][j] ==0:
                    kongbai.append((i,j))
        if len(kongbai):
            (a,b) = random.choice(kongbai)
            self.t1[a][b] = random.choice([2,4])
        else:
            self.gameover()

    def gameover(self):
        self.show()
        print('你输咯')
        input()

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

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

    def move(self):
        print('w 上移,a左移,s下移,d右移,')
        step = input('。◕ᴗ◕。◞✺')
        if step == ('w' or 'W'):
            self.up()
        elif step == ('a' or 'A'):
            self.left()
        elif step == ('s' or 'S'):
            self.down()
        elif step == ('d' or 'D'):
            self.right()
        else:
            print('输入错误')
            move()

if __name__ == '__main__':
    game = game2048()
    game.creat()
    game.creat()
    game.show()
    while True:
        game.move()
        game.check()
        game.creat()
        game.show()
        
想知道小甲鱼最近在做啥?请访问 -> 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-11-16 21:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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