Python(四):数字连珠2

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

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

最新修改代码如下:

  1 import random       # for random.randrange()
  2 import os            # for input()
  3 import string        # for string.count()
  4
  5 ballColorNum = 7      # 7 colors
  6 RowNum = 6           # chesspad have 10 rows
  7 ColNum = 10          # chesspad have 10 cols
  8
  9 chPad = []            # save chesspad state
 10 Scores = 0            # save scores
 11
 12 class ball():
 13     def __init__(self):
 14         self.color = random.randrange(1,ballColorNum)
 15         self.x = random.randrange(0,RowNum)
 16         self.y = random.randrange(0,ColNum)
 17
 18 #---------------------------------------
 19 # initial chesspad state, all 0, COL*ROW
 20 #---------------------------------------
 21 def chesspad_init():
 22     chPad = [[0 for x in range(ColNum)] for x in range(RowNum)]
 23     return chPad
 24 #---------------------------------------
 25 # update chesspad with a ball
 26 #---------------------------------------
 27 def chesspad_update(chPad, ball):
 28     chPad[ball.x][ball.y] = ball.color
 29     return chPad
 30 #---------------------------------------
 31 # redraw chesspad
 32 #---------------------------------------
 33 def chesspad_flush(chPad):
 34     for i in range(len(chPad)):
 35         for c in chPad[i]:
 36             #print(‘%d‘%c,end=‘ ‘)                   #for win
 37             print(‘\33[1;%dm%d‘%(30+c,c),end=‘ ‘)  #for linux
 38         print(‘\n‘)
 39 #---------------------------------------
 40 # count the number of unused spaces in chesspad
 41 #---------------------------------------
 42 def countNull(chPad):
 43     n = 0
 44     for i in range(len(chPad)):
 45         for j in range(len(chPad[i])):
 46             if chPad[i][j] == 0:
 47                 n += 1
 48     return n
 49 #---------------------------------------
 50 # move from x1,y1 to x2,y2
 51 #---------------------------------------
 52 def move(chpad,x1,y1,x2,y2):
 53     if x1 > RowNum-1 or x2 > RowNum-1  54        or y2 > ColNum-1 or y1 > ColNum-1:
 55         print(‘input error‘)
 56
 57     else:
 58         chpad[x1][y1],chpad[x2][y2] =  59         chpad[x2][y2],chpad[x1][y1]
 60
 61 #---------------------------------------
 62 # calculate_Score
 63 #---------------------------------------
 64 def calculate_Score(chpad):
 65     pass
 66
 67 #---------------------------------------
 68 # find
 69 #---------------------------------------
 70 def compare_str(chpad,str4dict,x,y):
 71     pass
 72
 73 #---------------------------------------
 74 #reverse a sting. e.g. ‘ABC‘ to ‘CBA‘
 75 #---------------------------------------
 76 def reverse_str(s):
 77     l = []
 78     sr = ‘‘
 79     for c in s:
 80         l.append(c)
 81     l.reverse()
 82     for c in l:
 83         sr += c
 84     return sr
 85 #---------------------------------------
 86 # generate 4 strings and return a dict:
 87 # FORMART:
 88 # {‘RW‘:‘...‘,‘CL‘:‘...‘,
 89 #  ‘LR‘:‘...‘,‘RL‘:‘...‘}
 90 # compare with chpad[x][y] which aspears
 91 #  5 times
 92 #---------------------------------------
 93 def get4str(chpad,x,y):
 94
 95     sx=sy=slr=srl=‘‘
 96
 97     # ROW(X)
 98     for c in chpad[x]:
 99         sx += str(c)
100
101     # COL(Y)
102     for i in range(RowNum):
103         sy += str(chpad[i][y])
104
105     # from left-top to right-buttom
106     for i in range(x):
107         if x-i <= 0 or y-i <= 0:
108             break
109         else:
110             slr += str(chpad[x-i-1][y-i-1])
111     slr = reverse_str(slr)
112     for i in range(RowNum-x):
113         if x+i >= RowNum or y+i >= ColNum:
114             break
115         else:
116             slr += str(chpad[x+i][y+i])
117
118     # from right-top to left-buttom
119     for i in range(1,x):
120         if x-i <= 0 or y+i >= ColNum:
121             break
122         else:
123             srl += str(chpad[x-i][y+i])
124     srl = reverse_str(srl)
125     for i in range(RowNum-x):
126         if x+i > RowNum-1 or y-i < 0:
127             break
128         else:
129             srl += str(chpad[x+i][y-i])
130
131     return {‘RW‘:sx,‘CL‘:sy,‘LR‘:slr,‘RL‘:srl}
132
133 def main():
134     print(‘\n-------------------GAME------------------\n‘)
135     pad = chesspad_init()
136     while 1:
137         ‘‘‘generate 3 balls with random locations and colors
138         and update chesspad.
139         ‘‘‘
140         n = 1
141         while 1:
142             b = ball()
143             if pad[b.x][b.y] == 0:
144                 print(‘(%d,%d:%d)‘%(b.x, b.y, b.color),end=‘ ‘)
145                 pad = chesspad_update(pad, b)
146                 if countNull(pad) == 0:
147                     print("\n\nGAME OVER!")
148                     exit()
149                 n += 1
150             

5chess.py

时间: 2024-10-10 20:51:04

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

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

Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据类型存储数值.他们是不可改变的数据类型,这意味着改变数字数据类型的结果,在一个新分配的对象的值.Number对象被创建,当你给他们指派一个值.例如: var1 = 1 var2 = 10 您也可以删除数字对象的参考,使用del语句.del语句的语法是: del var1[,var2[,var3[..

Python Number(数字) Ⅰ

Python Number(数字) Python Number 数据类型http://www.xuanhe.net/用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量赋值时 Number 对象将被创建: 您也可以使用del语句删除一些 Number 对象引用. del语句的语法是: 您可以通过使用del语句删除单个或多个对象,例如: Python 支持四种不同的数值类型: 整型(Int) - 通常被称为是整型或整数,是正或

python 猜数字游戏

这里来写一个python猜数字的游戏. #coding:utf-8 import random real_num = random.randrange(10) retry_count = 0 while retry_count <= 2 :     guess_num = raw_input("Please guess the real num:").strip()     if len(guess_num) ==0:         continue     if guess_

Python之数字中的函数

Python之数字中的函数 本篇在与介绍Python语法中关于数字部分的各种函数 1.标准类型函数 数字中的标准类型函数适用于所有的标准类型,常用的有三种:cmp(), str(), type(). 下面将分别介绍 cmp()函数: cmp(x, y) 接收两个参数,对这两个参数进行比较,并返回值.若x>y,返回1:若x=y,返回0:若x<y,返回-1. >>>cmp(2, 4)-1 str()函数: str(object) 将给定对象object返回为格式化好的字符串,常用

python取数字、字母

python取数字.字母 有一串字符串"lxa7YzU",其中有大写字母.小写字母和数字,现编写一脚本使得实现以下功能: 将这串字符串中的数字.大写字母.小写字母分别取出来并进行分类. 脚本如下所示: Zifuchuan = "lxa7YzU" Digit = "" ; Lower = "" ; Upper = "" for i in Zifuchuan : if i.isdigit() : Digit +

Python之数字

Python之数字 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #000000 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px

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

序言:你有没有想过单纯使用 CSS 也可以制作一款游戏?甚至可以双人对决?这是一篇非常有趣的文章,作者详细讲解了使用纯 CSS 制作四子连珠游戏的思路以及使用奇淫巧技解决困难问题的方法.因为案例本身比较复杂,而本人水平有限,翻译必有不恰当之处,望指正. 原文:How the Roman Empire Made Pure CSS Connect 4 Possible 翻译:nzbin 实验是学习新技巧.思考新想法.并突破自身极限的有趣的方式."纯 CSS"演示很早就有了,但是随着浏览器和

Python判断数字回文(转字符串实现,不转字符串实现)

Python实现数字回文的判断,回文返回True,非回文返回False, 只有一位数的也返回True. 其中思路一,将数字转换成字符串,然后跟逆序对比,但需要额外的空间开销来创建字符串.具体实现: def isPalindrome(x): """ :type x: int :rtype: bool """ str_x = str(x) if len(str_x) == 0: print("Input {0} is invalid.&qu

Python输出数字金字塔

使用Python输出一个数字金字塔 运行结果: 源代码: ''' Python输出数字金字塔 ''' for x in range(1,10): print(' '*(15-x),end='') n=x while n>=1: print(n,sep='',end='') n-=1 n+=2 while n<=x: print(n,sep='',end='') n+=1 print() 原文地址:https://www.cnblogs.com/yijiahao/p/11740372.html