对上次的代码作了一些修改。在码的过程中发现,最核心的部分是在横向、竖向和两个对角方向上找到5个以上相同的数字。

自己的思路是将x行y列所在的x行、y列,以及以此为交叉点的两点对角线上的数字,转化成字符串(这部分是程序中get4str()的功能),然后利用字符串相关函数进行处理(待完成)。

最新修改代码如下:

 import random        # for random.randrange()
import os # for input()
import string # for string.count() ballColorNum = 7 # 7 colors
RowNum = 6 # chesspad have 10 rows
ColNum = 10 # chesspad have 10 cols chPad = [] # save chesspad state
Scores = 0 # save scores class ball():
def __init__(self):
self.color = random.randrange(1,ballColorNum)
self.x = random.randrange(0,RowNum)
self.y = random.randrange(0,ColNum) #---------------------------------------
# initial chesspad state, all 0, COL*ROW
#---------------------------------------
def chesspad_init():
chPad = [[0 for x in range(ColNum)] for x in range(RowNum)]
return chPad
#---------------------------------------
# update chesspad with a ball
#---------------------------------------
def chesspad_update(chPad, ball):
chPad[ball.x][ball.y] = ball.color
return chPad
#---------------------------------------
# redraw chesspad
#---------------------------------------
def chesspad_flush(chPad):
for i in range(len(chPad)):
for c in chPad[i]:
print('%d'%c,end=' ') #for win
#print('\33[1;%dm%d'%(30+c,c),end=' ') #for linux
print('\n')
#---------------------------------------
# count the number of unused spaces in chesspad
#---------------------------------------
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 from x1,y1 to x2,y2
#---------------------------------------
def move(chpad,x1,y1,x2,y2):
if x1 > RowNum-1 or x2 > RowNum-1 \
or y2 > ColNum-1 or y1 > ColNum-1:
print('input error') else:
chpad[x1][y1],chpad[x2][y2] = \
chpad[x2][y2],chpad[x1][y1] #---------------------------------------
# calculate_Score
#---------------------------------------
def calculate_Score(chpad):
pass #---------------------------------------
# find
#---------------------------------------
def compare_str(str4dict,x,y):
pass
#---------------------------------------
# generate 4 strings and return a dict:
# FORMART:
# {'RW':'...','CL':'...',
# 'LR':'...','RL':'...'}
# compare with chpad[x][y] which aspears
# 5 times
#---------------------------------------
def get4str(chpad,x,y): sx=sy=slr=srl='' # ROW(X)
for c in chpad[x]:
sx += str(c) # COL(Y)
for i in range(RowNum):
sy += str(chpad[i][y]) # from left-top to right-buttom
for i in range(x):
if x-i <= 0 or y-i <= 0:
break
else:
slr += str(chpad[x-i-1][y-i-1])
slr[::-1] # reverse for i in range(RowNum-x):
if x+i >= RowNum or y+i >= ColNum:
break
else:
slr += str(chpad[x+i][y+i]) # from right-top to left-buttom
for i in range(1,x):
if x-i <= 0 or y+i >= ColNum:
break
else:
srl += str(chpad[x-i][y+i])
srl[::-1] # reverse for i in range(RowNum-x):
if x+i > RowNum-1 or y-i < 0:
break
else:
srl += str(chpad[x+i][y-i]) return {'RW':sx,'CL':sy,'LR':slr,'RL':srl} 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('(%d,%d:%d)'%(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_flush(pad) x1=y1=x2=y2=0
a = input('Move (x1,y2) to (x2,y2):').split(' ')
x1,y1,x2,y2 = int(a[0]),int(a[1]),int(a[2]),int(a[3])
move(pad,x1,y1,x2,y2 )
print(get4str(pad, x2, y2)) chesspad_flush(pad) if __name__=='__main__':
main()

以上代码后面有修改,98行、112行本来是自己写的一个反转字符串的函数实现,后来才知道用切片str[::-1]实现更简洁。

Python(四):数字连珠2的更多相关文章

  1. Python 1基础语法四(数字类型、输入输出汇总和命令行参数)

    一.数字(Number)类型 python中数字有四种类型:整数.布尔型.浮点数和复数. int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long. ...

  2. Python 四种数值类型(int,long,float,complex)区别及转换

    Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数), 数字数据类型存储数值.他们是不可改变的数据类型,这意味着改变数字数据类型的结 ...

  3. python 四种数值类型(int,long,float,complex)介绍

    Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据 ...

  4. Python Number(数字) Ⅰ

    Python Number(数字) Python Number 数据类型http://www.xuanhe.net/用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的 ...

  5. 如何使用纯 CSS 制作四子连珠游戏

    序言:你是否想过单纯使用 CSS 也可以制作一款游戏?甚至可以双人对决!这是一篇非常有趣的文章,作者详细讲解了使用纯 CSS 制作四子连珠游戏的思路以及使用奇淫巧技解决困难问题的方法.因为案例本身比较 ...

  6. 【笔记】基于Python的数字图像处理

    [博客导航] [Python相关] 前言 基于Python的数字图像处理,离不开相关处理的第三方库函数.搜索网络资源,列出如下资源链接. Python图像处理库到底用哪家 python计算机视觉编程— ...

  7. python基础——数字&集合&布尔类型

    Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...

  8. 零基础学习 Python 之数字与运算

    写在之前 大家好,这里是零基础学习 Python 系列,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对于一个人的考验, ...

  9. Python之数字

    Python之数字 int(数字)===>在Python3中,int没有范围,在Python2中,int超出范围就叫长整型(Long). 浮点运算:单精度 float 双精度 double a: ...

  10. python取数字、字母

    python取数字.字母 有一串字符串“lxa7YzU”,其中有大写字母.小写字母和数字,现编写一脚本使得实现以下功能: 将这串字符串中的数字.大写字母.小写字母分别取出来并进行分类. 脚本如下所示: ...

随机推荐

  1. C语言格式化输入输出函数

    一:格式输出函数printf() 1.调用形式一般为:printf("格式化控制字符串",输出表列): 2.格式化控制字符串用于指定输出格式,它有三种形式: 1.格式说明符:规定了 ...

  2. Caffe--solver.prototxt配置文件 参数设置及含义

    ####参数设置################### 1. ####训练样本### 总共:121368个batch_szie:256将所有样本处理完一次(称为一代,即epoch)需要:121368/ ...

  3. 将rcc.exe添加到系统Path

    rcc不是内部或外部命令搜索下rcc.exe二进制文件的位置,然后将该路径添加到path环境变量中. 在cmd中输入path,显示当前的环境变量. 然后path = %path%;C:\Qt\4.8. ...

  4. Android获取当前时间与星期几

    public class DataString { private static String mYear; private static String mMonth; private static ...

  5. scheme 阴阳谜题

    本篇分析continuation的一个著名例子"阴阳迷题",这是由David Madore先生提出的,原谜题如下: (let* ((yin ((lambda (foo) (disp ...

  6. 华为手机root 删除一般不用软件 的命令

    上个B518海外版的一键root精简 精简了以下这些,不想删除的自己可以在刷机脚本中删除对应行就行了,音量解锁,GPS,搜索键关屏,root,添加钛备份4.0,re管理器,其他框架未改动,稳定性不会变 ...

  7. 黑马程序员_Java面向对象1_封装

    3.面向对象_封装 3.1面向对象概念 3.1.1理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为(执行者) 面向对象:将功能封装进对象,强调具备了 ...

  8. JAVA车票管理系统(简单GUI)

    一.    需求分析 1.设计题目:车票管理系统 用JAVA语言和数据结构知识设计设计车票管理系统.要求如下所述: 一车站每天有n个发车班次,每个班次都有一个班次号(1.2.3…n),固定的发车时间, ...

  9. python turtle,random,math

    # List imports here: import turtle import random import math # List constants here (NO MAGIC NUMBERS ...

  10. js为鼠标添加右击事件

    <script language="javascript">  /*document.oncontextmenu=Youji;*/  //为当前文档添加鼠标右击事件,防 ...