中午有段时间,模仿《五子连珠》写了一段代码,运行截图如下:

import random      # for random.randrange()
import os # for input() ballColorNum = 7 # 7 colors
padRowNum = 10 # chesspad have 10 rows
padColNum = 10 # chesspad have 10 cols chPad = [] # save chesspad state
threeBall = [] # generate 3 balls one time class ball():
def __init__(self):
self.color = random.randrange(1,ballColorNum)
self.x = random.randrange(0,padRowNum)
self.y = random.randrange(0,padColNum) # initial chesspad state, all 0, 10*10
def chesspad_init():
chPad = [[0 for x in range(10)] for x in range(10)]
return chPad def chesspad_update(chPad, ball):
chPad[ball.x][ball.y] = ball.color
return chPad def chesspad_flash(chPad):
for i in range(10):
print('- ', end=' ')
print('\n')
for i in range(len(chPad)):
for c in chPad[i]:
print('\33[1;%dm%d '%(30+c,c),end=' ')
print('\n')
for i in range(10):
print('- ', end=' ')
print('\n') def countNull(chPad):
n = 0
for i in range(len(chPad)):
for j in range(len(chPad[i])):
if chPad[i][j] == 0:
n += 1
return n # move a ball from x1,y1 to x2,y2
def move_from_XY1_to_XY2():
pass def calculate_Score():
pass def auto_eliminate():
pass def main():
print('\n-------------------GAME------------------\n')
pad = chesspad_init()
while 1:
n = 1
while 1:
b = ball()
if pad[b.x][b.y] == 0:
print('Ball%d:(%d,%d:%c)'%(n, b.x, b.y, b.color),end=' ')
pad = chesspad_update(pad, b)
if countNull(pad) == 0:
print("\n\nGAME OVER!")
exit()
n += 1
if n > 3:
break
print('\n')
chesspad_flash(pad) if input('MoveTo:(x1,y1)(x2,y2)=>'):
pass chesspad_flash(pad) if __name__=='__main__':
main()

这里的chesspad_flash()函数参考了《python在linux中输出带颜色的文字的方法》,其他没有什么技巧可言。随机函数random.randrange(),需要random模块支持。用os模块中的input()函数,表现“按回车键继续.....”的效果。

下一步,还有三个函数没写。想好再说吧!:)

python学习(四)五数连珠的更多相关文章

  1. python学习第五次笔记

    python学习第五次笔记 列表的缺点 1.列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢. 2.列表只能按照顺序存储,数据与数据之间关联性不强 数据类型划分 数据类型:可变数据 ...

  2. Python学习第五堂课

    Python学习第五堂课推荐电影:华尔街之狼 被拯救的姜哥 阿甘正传 辛德勒的名单 肖申克的救赎 上帝之城 焦土之城 绝美之城 #上节内容: 变量 if else 注释 # ""& ...

  3. python学习第五十四天hashlib模块的使用

    hash算法 hash也做散列,也称为哈希,主要用于信息安全领域中加密算法,hash就是找一种数据内容和数据存放地址直接的映射关系. md5算法 md5讯息算法,广泛使用密码函数 md5算法的特点 1 ...

  4. python学习笔记五 模块上(基础篇)

    模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

  5. Python学习笔记五

    一. 递归 递归函数: def a (): print ("from b") b() def b(): print("from a ") a() a() 递推和 ...

  6. Python学习笔记五:错误与异常

    一:常见异常与错误 BaseException 所有异常的基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类S ...

  7. Python 学习 第五篇:语句和语法

    Python程序是语句构成的,语句包含表达式,表达式嵌套在语句中,包含变量和常量,用于处理对象.Python的语法实质上是由表达式.语句和代码块构成的.语句是由表达式构成的,代码块是由多个语句构成的复 ...

  8. python学习笔记4--函数/全局变量/递归

    一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...

  9. Python学习(五)函数 —— 内置函数 lambda filter map reduce

    Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ...

随机推荐

  1. android ioctl fuzz,android 本地提权漏洞 android root

    目前正在研究android 三方设备驱动 fuzzer , 也就是下图所说的 ioctl fuzzing, 下图是由keen team nforest 大神发布: 欢迎正在研究此方面的人联系我共同交流 ...

  2. 跨域Ajax请求 web.config文件配置

    在web.config文件的<system.webServer>节点下面添加如下配置代码:<!--允许跨域ajax访问--> <httpProtocol> < ...

  3. 扩展Log4j支持JNDI数据源

    log4j.properties配置文件: log4j.rootLogger=INFO,db #使用log4j扩展支持JNDI数据源 log4j.appender.db=com.qdgswx.log4 ...

  4. 智能卡安全机制比较系列(三) MPCOS

    MPCOS是金普斯早期推出的一款多应用支付芯片卡操作系统,支持ISO7816以及PCOS的数据格式和命令.MPCOS具有两级目录文件结构,即MF下可以有一级DF,每个DF下最多可创建63个EF. MP ...

  5. Delphi事件列表赏析(38个事件,必须要对这些事件非常熟悉,才能如臂使指,才能正确发布到新控件!)

    我把Delphi常用的几个类的事件都收集齐了,并一一加以注释.原因是在自定义的过程中,看到那堆长长的事件列表感到头晕,但是如果不发布这些事件的话,更是暴殄天物.所以关键还是要对这些事件非常熟悉,才能不 ...

  6. authbind start tomcat services as user with less that 1024 ports. linux常规用户使用tomcat的80端口

    Start tomcat services using authbind this will allow user to start ports less than 1024 we do not ne ...

  7. MVC4.0系统开发新手历程(三)---数据导入计算

      数据导入计算 数据的重要意义就不需要我多说了吧,本项目中的数据来源是来自荆艺系统(熟悉物流报关的朋友应该知道)导出的一张Excel,包含了一段时间内整个公司所有销售的全部记录,保密级别那是杠杠的, ...

  8. AS3读取加密XML

    首先要确定xml使用了哪些加密方式,这样在As3中就反过来解密. 我加密xml的方式是先将xml文件打包为一个压缩文件,然后将压缩文件进行RC4加密,最后用base64将加密过的压缩包转为base64 ...

  9. bzoj2346[Baltic 2011]Lamp

    Description 2255是一个傻X,他连自己家灯不亮了都不知道. 某天TZ大神路过他家,发现了这一情况, 于是TZ开始行侠仗义了. TZ发现是电路板的问题, 他打开了电路板,发现线路根本没有连 ...

  10. puppetSvn集成