用tkinter设计的重置游戏

2024-09-28 05:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者,设计了一个“计算彩球游戏”。我现在一直在想,在一轮比赛结束后重新开始比赛的最佳方式

目前: 当你们点击开始游戏时,它会填充25个随机的彩色球,然后给用户10秒的时间来计算红色和绿色的球。它以消息框的形式显示最终答案。一旦我关闭消息框,球就会留在屏幕上,然后当我点击开始游戏时,又有25个球堆积在屏幕上

我想要的是: 如何重置游戏,以便当我完成一轮并点击开始游戏时,它清除现有游戏并重新启动

我的代码

from tkinter import *

import random

import time



#from tkinter import ttk

from tkinter import messagebox

#creating a list of colors:

colors=["blue","red","yellow","green","red","pink","red","black","green","cyan"]

#creating global variables and inititializing:

global i

i=0

global redcount

redcount=0

global greencount

greencount=0

global canvas



def startgame():
    global canvas
    x=startclick()
    
    if x==1:
        time.sleep(5)
    messagebox.showinfo("Answer"," number of red balls "+str(redcount)+
                        " and number of green balls is "+str(greencount))

        
#==============================================

def startclick():
    global i
    global canvas
    global redcount
    global greencount
    
    for i in range(1,26):
        m=random.randint(0,10)
        if m == 1 or m ==4 or m==6:
            redcount=redcount+1
        if m == 3 or m==8:
            greencount=greencount+1
    
        try:
            a=random.randint(50,250)
            b=random.randint(50,350)
            canvas.create_oval(a,b,a+50,b+50,outline="white",fill=colors[m],width=1)
            canvas.update()
    
        except:
            print()
    return(1)
        
#===============================================

    
#===============================================
root=Tk()
root.title("Count The Colors")
root.geometry("800x800+0+0") #dimension and position of main frame

#creating canvas of the game
canvas = Canvas(width=600,height=500, bg = "#d2b48c")
canvas.place(x=20, y=20)

w=Label(root,text="Can you count the number of red and green balls?",bg="black",fg="yellow")
w.place(x=30,y=500)

y=Label(root, text="You have 10 seconds to answer...press start to play",
        bg="white", fg="black")
y.place(x=20,y=550)

b=Button(root,text = "Start", bg="#fd5f00", width=20, height=1, 
         font=("Times",12,"bold"), fg="brown", command = startgame)
b.place(x=20, y=600)



root.mainloop()

感谢您在这方面的帮助


Tags: andoffromimport游戏placerandomgreen
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:29

首先,您没有遵循编程约定,但无论如何,每次调用startclick()函数时都可以清除画布。只需添加canvas.delete(“全部”)即可删除先前创建的椭圆

def startclick():
global i
global canvas
global redcount
global greencount
canvas.delete("all") #This is your solution
for i in range(1, 26):
    m = random.randint(0, 10)
    if m == 1 or m == 4 or m == 6:
        redcount = redcount + 1
    if m == 3 or m == 8:
        greencount = greencount + 1

    try:
        a = random.randint(50, 250)
        b = random.randint(50, 350)
        canvas.create_oval(a, b, a + 50, b + 50, outline="white", fill=colors[m], width=1)
        canvas.update()

    except:
        print()
return (1)

相关问题 更多 >

    热门问题