python小游戏代码分析_五项python小游戏代码测试

测试的项目分别为:1,猜单词 2,发牌游戏 3,猜数字游戏 4,图形版发牌程序 5,拼图游戏

以下为测试代码及其结果:

1:猜单词

代码如下:

# Word Jumble 猜单词游戏

import random

# 创建单词序列

WORDS = ('python','easy','difficult','answer','continue','jumble','phone','desktop',

'position','game','quick','find','apple','banana','orange','stream')

print(

"""

欢迎参加猜单词游戏

把字母组合成一个正确的单词,

"""

)

iscontinue="y"

while iscontinue == "y" or iscontinue == "Y":

# 从序列中随机挑选出一个单词

word = random.choice(WORDS)

# 一个用于判断玩家是否参对的变量

correct = word

# 创建乱序后的单词

jumble = ""

while word: # Word不是空串时循环

# 根据word长度,产生word的随机位置

position = random.randrange(len(word))

# 将position位置字母组合到乱序后单词

jumble += word[position]

# 通过切片,将position位置字母从原单词中删除

word = word[:position] + word[(position + 1):]

print("乱序后单词:",jumble)

guess = input("\n请你猜:")

while guess != correct and guess != "":

print("对不起你猜的不正确")

guess = input("继续猜:")

if guess == correct:

print("恭喜你,猜对了!\n")

iscontinue = input("\n是否继续(Y/N):")

运行结果:

2,发牌游戏

代码如下:

# Card Moudule

# Basic classes for a game with playing cards

class Card():

""" A Playing card"""

RANKS = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]

SUITS = ["梅","方","红","黑"]

def __init__(self,rank,suit,face_up = True):

self.rank = rank

self.suit = suit

self.is_face_up = face_up

def __str__(self):

if self.is_face_up:

rep = self.suit + self.rank

else:

rep = "XX"

return rep

def flip(self):

self.is_face_up = not self.is_face_up

def pic_order(self):

if self.rank == "A":

FaceNum = 1

elif self.rank == "J":

FaceNum = 11

elif self.rank == "Q":

FaceNum = 12

elif self.rank == "K":

FaceNum = 13

else:

FaceNum = int(self.rank)

if self.suit == "梅":

Suit = 1

elif self.suit == "方":

Suit = 2

elif self.suit == "红":

Suit = 3

else:

Suit = 4

return (Suit - 1) * 13 + FaceNum

class Hand():

"""A hand of plating card"""

def __init__(self):

self.cards = []

def __str__(self):

if self.cards:

rep = ""

for card in self.cards:

rep += str(card) + "\t"

else:

rep = "无牌"

return rep

def clear(self):

self.cards = []

def add(self, card):

self.cards.append(card)

def give(self,card,other_hand):

self.cards.remove(card)

other_hand.add(card)

class Poke(Hand):

"""A deck of playing cards"""

def populate(self):

for suit in Card.SUITS:

for rank in Card.RANKS:

self.add(Card(rank,suit))

def shuffle(self):

import random

random.shuffle(self.cards)

def deal(self, hands, per_hand = 13):

for rounds in range(per_hand):

for hand in hands:

top_card = self.cards[0]

self.cards.remove(top_card)

hand.add(top_card)

if __name__ == "__main__":

print("This is a module with classes for playing cards.")

players = [Hand(),Hand(),Hand(),Hand()]

poke1 = Poke()

poke1.populate()

poke1.shuffle()

poke1.deal(players,13)

n=1

for hand in players:

print("牌手",n,end=":")

print(hand)

n=n+1

input("\nPress the enter key to exit.")

运行结果:

3,猜数字游戏

代码如下:

import tkinter as tk

import sys

import random

import re

number=random.randint(0,1024)

running=True

num=0

nmaxn=1024

nmin=0

def eBtnClose(event):

root.destroy()

def eBtnGuess(event):

global nmaxn

global nmin

global num

global running

if running:

val_a=int(entry_a.get())

if val_a==number:

labelqval("恭喜答对了!")

num+=1

running=False

numGuess()

elif val_a

if val_a>nmin:

nmin=val_a

num+=1

label_tip_min.config(label_tip_min,text=nmin)

labelqval("小了哦")

else:

if val_a

nmaxn = val_a

num += 1

label_tip_max.config(label_tip_max, text=nmaxn)

labelqval("大了哦")

else:

labelqval("你已经答对了")

def numGuess():

if num==1:

labelqval("你已经答对了!")

elif num<10:

labelqval("==十次以内就答对了牛。。。尝试次数:"+str(num))

elif num<50:

labelqval("还行哦尝试次数:"+str(num))

else:

labelqval("好吧。。。你都超过50次了。。。尝试次数:"+str(num))

def labelqval(vText):

label_val_q.config(label_val_q,text=vText)

root= tk.Tk(className="猜数字游戏")

root.geometry("400x90+200+200")

line_a_tip=tk.Frame(root)

label_tip_max=tk.Label(line_a_tip,text=nmaxn)

label_tip_min=tk.Label(line_a_tip,text=nmin)

label_tip_max.pack(side="top",fill="x")

label_tip_min.pack(side="bottom",fill="y")

line_a_tip.pack(side="left",fill="y")

line_question=tk.Frame(root)

label_val_q=tk.Label(line_question,width="80")

label_val_q.pack(side="left")

line_question.pack(side="top",fill="x")

line_input=tk.Frame(root)

entry_a=tk.Entry(line_input,width="40")

btnguess=tk.Button(line_input,text="猜")

entry_a.pack(side="left")

entry_a.bind('',eBtnGuess)

btnguess.bind('',eBtnGuess)

btnguess.pack(side="left")

line_input.pack(side="top",fill="x")

line_btn=tk.Frame(root)

btnClose=tk.Button(line_btn,text="关闭")

btnClose.bind('',eBtnClose)

btnClose.pack(side="left")

line_btn.pack(side="top")

labelqval("请输入0-1024之间任意整数:")

entry_a.focus_set()

print(number)

root.mainloop()

运行结果:

4,图片发牌程序

代码如下:

from tkinter import *

import random

n=52

def gen_pocker(n):

x=100

while(x>0):

x=x-1

p1=random.randint(0,n-1)

p2=random.randint(0,n-1)

t=pocker[p1]

pocker[p1]=pocker[p2]

pocker[p2]=t

return pocker

pocker=[i for i in range(n)]

pocker=gen_pocker(n)

print(pocker)

(player1,player2,player3,player4)=([],[],[],[])

(p1,p2,p3,p4)=([],[],[],[])

root=Tk()

# 创建一个Canvas,设置其背景色为白色

cv=Canvas(root,bg='white',width=700,height=600)

imgs=[]

for i in range(1,5):

for j in range(1,14):

imgs.insert((i-1)*13+(j-1),PhotoImage(file='D:\images\\'+str(i)+'-'+str(j)+'.gif'))

for x in range(13): #13轮

m=x*4

p1.append(pocker[m])

p2.append(pocker[m+1])

p3.append(pocker[m+2])

p4.append(pocker[m+3])

p1.sort()

p2.sort()

p3.sort()

p4.sort()

for x in range(0,13):

img=imgs[p1[x]]

player1.append(cv.create_image((200+20*x,80),image=img))

img = imgs[p2[x]]

player1.append(cv.create_image((100,150+20*x), image=img))

img = imgs[p3[x]]

player1.append(cv.create_image((200 + 20 * x, 500), image=img))

img = imgs[p4[x]]

player1.append(cv.create_image((560,150+20*x), image=img))

print("player1:",player1)

print("player2:",player2)

print("player3:",player3)

print("player4:",player4)

cv.pack()

root.mainloop()

运行结果:

5,拼图游戏

代码如下:

from tkinter import *

from tkinter.messagebox import *

import random

root=Tk('拼图游戏')

root.title("拼图")

# 载入外部图像

Pics=[]

for i in range(9):

filename='t_p\\mao_'+str(i+1)+'.png'

Pics.append(PhotoImage(file=filename))

# 定义常量

# 画布的尺寸

WIDTH=980

HEIGHT=545

# 图像块的边长

IMAGE_WIDTH=WIDTH//3

IMAGE_HEIGHT=HEIGHT//3

# 棋盘行列数

ROWS=3

COLS=3

# 移动步数

steps=0

# 保存所有图像块的列表

board=[[0, 1, 2],

[3, 4, 5],

[6, 7, 8]]

# 图像块类

class Square:

def __init__(self,orderID):

self.orderID=orderID

def draw(self,canvas,board_pos):

img=Pics[self.orderID]

canvas.create_image(board_pos,image=img)

# 初始化拼图板

def init_board():

# 打乱图像块坐标

L=list(range(8))

L.append(None)

random.shuffle(L)

# 填充拼图板

for i in range(ROWS):

for j in range(COLS):

idx=i*ROWS+j

orderID=L[idx]

if orderID is None:

board[i][j]=None

else:

board[i][j]=Square(orderID)

# 重置游戏

def play_game():

global steps

steps=0

init_board()

# 绘制游戏界面各元素

def drawBoard(canvas):

# 画黑框

canvas.create_polygon((0,0,WIDTH,0,WIDTH,HEIGHT,0,HEIGHT),width=1,outline='Black',fill='green')

# 画图像块

# 代码写在这里

for i in range(ROWS):

for j in range(COLS):

if board[i][j] is not None:

board[i][j].draw(canvas,(IMAGE_WIDTH*(j+0.5),IMAGE_HEIGHT*(i+0.5)))

def mouseclick(pos):

global steps

# 将点击位置换算成拼图板上的坐标

r=int(pos.y//IMAGE_HEIGHT)

c=int(pos.x//IMAGE_WIDTH)

print(r,c)

if r<3 and c<3:

if board[r][c] is None:

return

else:

current_square=board[r][c]

if r-1>=0 and board[r-1][c] is None:

board[r][c]=None

board[r-1][c]=current_square

steps+=1

elif c+1<=2 and board[r][c+1] is None:

board[r][c] = None

board[r][c+1] = current_square

steps += 1

elif r+1<=2 and board[r+1][c] is None:

board[r][c] = None

board[r+1][c] = current_square

steps += 1

elif c-1>=0 and board[r][c-1] is None:

board[r][c] = None

board[r][c-1] = current_square

steps += 1

#print(board)

label1["text"]=str(steps)

cv.delete('all')

drawBoard(cv)

if win():

showinfo(title="恭喜",message="你成功了!")

def win():

for i in range(ROWS):

for j in range(COLS):

if board[i][j] is not None and board[i][j].orderID!=i*ROWS+j:

return False

return True

def callBack2():

print("重新开始")

play_game()

cv.delete('all')

drawBoard(cv)

# 设置窗口

cv=Canvas(root,bg='white',width=WIDTH,height=HEIGHT)

b1=Button(root,text="重新开始",command=callBack2,width=20)

label1=Label(root,text="0",fg="red",width=20)

label1.pack()

cv.bind("",mouseclick)

cv.pack()

b1.pack()

play_game()

drawBoard(cv)

root.mainloop()

运行结果:

至此五项小游戏测试完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值