【汇智学堂】-python小游戏(弹球游戏之十-游戏积分)

3.10游戏积分
最后我们处理一下,游戏结束时,给用户积分。
1、选择一种您认为合理的积分规则。
2、根据规则进行代码实现。

实现代码如下:

self.score=0
while 1:    
    if closeornot==1: 
        racket.draw()
        ball.draw()
    else:
        canvas.create_text(400,420,text="游戏结束",fill='red',font=('Times',110))
        canvas.create_text(200,220,text="您的得分:”+str(ball.score),\
fill='red',font=('Times',30))
        break     
    tk.update_idletasks()  
    tk.update()
    time.sleep(0.05)
    ball.score+=1    

在这里,我们积分的方法是:每更新一次,就加1分。这样,坚持的时间越长积分就越多。读者朋友们还可以想想更多的积分方法。

将代码整合起来,整合后完整代码如下:

#-*- coding:GBK -*-

from tkinter import *
import time
import random
import tkinter.messagebox #messagebox

closeornot=1
position=[1,1,1,1]

tk = Tk()
tk.title("雷雷的弹球游戏")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=800, height=800, bd=0, highlightthickness=0)
canvas.pack()
tk.update()

class racket:
    def __init__(self,canvas,color,ball):
        self.canvas=canvas
        self.x=0        
        self.id=canvas.create_rectangle(400, 600, 500, 620, fill =color)
        self.canvas.bind_all('<KeyPress-Left>', self.turn_left)
        self.canvas.bind_all('<KeyPress-Right>', self.turn_right)
        self.ball=ball
    
    def turn_left(self,evt):
        self.x=-5        
    def turn_right(self, evt):
        self.x = 5     
    def draw(self):  
        global closeornot
        pos = self.canvas.coords(self.id)
        if pos[0] <= 0:            
            self.x = 0
            closeornot=0
           
        if pos[0]>=700:
            self.x=0
            closeornot=0            
        self.canvas.move(self.id,self.x,0)        
        if self.collision(pos)==True:
            self.ball.y=-5       
    def collision(self,pos):
        posball = self.canvas.coords(self.ball.id) 
        if posball[1]<=pos[3] and posball[2]>=pos[0] and \
 posball[0]<=pos[2] and posball[3]>=pos[1]:
            return True
        return False
class ball:
    def __init__(self,canvas,color):
        
        self.canvas=canvas
        self.a=random.randint(50,600)
        self.b=random.randint(50,200)
        self.id=canvas.create_oval(self.a, self.b, self.a+20, self.b+20, fill =color)
        starts = [-3, -2, -1, 1, 2, 3]
        random.shuffle(starts)
        self.x = starts[0]
        self.y=5
        self.score=0        
    def draw(self):        
        global direction,closeornot
        position=canvas.coords(self.id)  
        if position[3]>=800:
            closeornot=0            
        if position[1]<=0:
            self.y=5 
        if position[0]<=0:
            self.x=3            
        if position[2]>=800:
            self.x=-3           
        self.canvas.move(self.id,self.x,self.y)
ball=ball(canvas,'red')
racket=racket(canvas,'green',ball)
while 1:    
    if closeornot==1: 
        racket.draw()
        ball.draw()
    else:
        canvas.create_text(400,420,text="游戏结束",fill='red',font=('Times',110))
        canvas.create_text(200,220,text="您的得分:”+str(ball.score), \
fill='red',font=('Times',30))
        break     
    tk.update_idletasks()  
    tk.update()
    time.sleep(0.05)
    ball.score+=1

运行这段代码,当游戏结束时,出现提示:您的得分:260。见图3-28
在这里插入图片描述
图3-28

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷玉广

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值