100行python代码做一个程序_Python练习:100行代码实现一个简易的2048游戏

1. 任务目标1。命令行下2048游戏2。主要功能:确定游戏结束;在一个随机生成新数据空白位置;翻译数字的四个方向上,下,左,和正确的,并执行合并后的数字结合起来;接收键盘输入;显示命令行数组数量。3.本教程是根据python3 2。基本知识的知识:数据类型、变量、列表、循环和判断,等;高级知识:功能、切片、迭代和基本使用的类,等等。3.模块:矩阵在numpy模块相关操作;随机的一些简单的功能模块;#把廖雪峰python教程作为一个例子,如果你学习面向对象的编程,你可以自己没有任何压力。第三,游戏设计理念必须首先有一件事对我们存储数组的数组(即数字显示在游戏中)。您可以使用一个列表或一个矩阵。我选择了一个矩阵。

这是麻烦的,但没有这样的内置数据类型在python中,所以第三方模块numpy使用。然后是考虑设计一个类,设计游戏的属性的属性类,并定义各种操作的游戏类的方法,这样会更方便将来扩展功能或修改它。第四,根据代码框架定义了类设计思想和任务目标,并定义游戏类的属性的属性。目前,定义了两个类的属性。一个是数组的维数,也就是说,一个4 * 4 2048 2048或5 * 5。这是方便我们以后添加新的游戏模式或困难。另一个属性是一个矩阵。您可以继续添加属性,比如游戏分数的属性或属性的游戏难度,或限制。时间的属性等等。类的方法是需要的函数或方法实现我们的使命目标。应该注意的是,它不一定是一个函数实现的方法。具体情况取决于实现的难度。

\/usr\/bin\/env python3 #编码:utf-8import numpyimport numpy作为npimport randomfrom随机进口choiceclass Game2048(对象):2048年\u201C类游戏\u201Cdef __init__(自我):#定义类属性=维#维度,决定建立一个数组的维数=((维度、维度))#创建一个n (n =维维数组的0 def judge_gameover(自我):#判断游戏是否在passdef generate_num(自我):#替换一个随机2或4在随机空白(0)的位置passdef left_2048(自我):#左盘和合并passdef right_2048(自我):#锅向右和合并passdef down_2048(自我):#盘下来,合并passdef up_2048(自我):#锅,合并passdef print_2048(自我):#显示passdef input_2048(自我):#输入passif __name__ = =\u201C__main__\u201D: #主程序通过四个。

首先考虑一个方向,我正在考虑离开的方向,然后左边的其他方向可以改变通过水平和垂直方向的变换矩阵。在完成翻译和合并操作,它可以转换回来。这可以减少代码的数量,也降低了难度。特定于每个方法的想法,后续逐步完成。详细的评论都写,应该更容易理解。,建议新手也养成写注释的习惯在一个标准化的方式,方便自己和他人的。下面的源代码:# !\/usr\/bin\/env python3 #编码:utf-8import numpyimport numpy作为npimport randomfrom随机进口choiceclass Game2048(对象):\u201C2048级游戏\u201D\u201C\u201D属性方法:judge_gameover(自我)generate_num(自我)left_2048(自我)right_2048(自我)down_2048(自我)up_2048(自我)print_(自我)input_(自我)\u201D\u201Cdef __init__(自我、尺寸= 4):=维度#维度,决定建立一个矩阵的几个维度=((维度、维度))#创建一个n (n =维维矩阵的0 def judge_gameover(自我):#判断游戏,如果游戏结束后,返回True,如果不是在返回False\u201D如果任何两个相邻数字在水平方向上相等或0,然后游戏没有结束\u201D的范围内():b的范围():如果[一][b] = =[一][b + 1]或[一][b] = = 0或[一][b + 1] = = 0:返回False\u201C如果任何两个相邻数字在垂直方向相等或0,然后游戏没有结束\u201D的范围内():b的范围():如果[一][b] = =[一][b + 1]或[一][b] = = 0或[一][b + 1] = = 0:返回Falsereturn Truedef generate_num(自我):#在一个随机的空白(0)替换的位置用一个随机2或4\u201C随机的空白(0)与一个随机位置2或4\u201D\u201C#判断矩阵的零号的位置,并设置索引放在list_0 list_0 =[]的范围():b的范围():如果[a, b] = = 0: list_ ([a, b]) # 0的数量判断矩阵的数字,如果是0,然后没有生成新数据如果len (list_0) !

=: list_(0)[我]= list_i '\u201D合并水平向左\u201D的范围内():b的范围():如果[一][b] ! = 0和[一][b] = =[一][b + 1]:[一][b] = 2 *[一][b][一][b + 1] = 0:通过\u201C左移\u201D我的范围():list_i =列表([我]),而0 list_i: list_(0),而len (list_i) ! =: list_(0)[我]= list_idef right_2048(自我):#锅向右和合并[我]=[我][::1]_2048()#注意班上内置函数调用之前彼此的自我。要求我在范围()在一个循环中:#再次逆矩阵的水平方向[我]=[我][::1]def down_2048(自我):#翻译下来merge_2048 () def up_2048(自我):#锅合并_2048 ()def print_2048(自我):#显示我的:打印(i) def input_2048(自我):#输入而真实:s =输入(\u201Cw (↑) (←) (↓) d(右):\u201D)如果s = =\u201Cw\u201D: _2048 () breakelif s = =\u201Ca\u201D: _2048 () breakelif s = =\u201Cs\u201D: _2048 () breakelif s = =\u201Cd\u201D: _2048 () breakelse:打印(\u201C请重新输入错误\u201D)continueif __name__ = =\u201C__main__\u201D: #主程序g1 = Game2048 () _num () _num () _num _2048()()而真实:_2048 ()_num() _2048()如果_gameover () = = True:打印(\u201C游戏结束\u201D)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值