python弹球游戏设计

from tkinter import *
from random import *
import time

class Ball:
    def __init__(self,canvas,color,winW,winH,racket):
        self.canvas = canvas
        self.racket = racket
        self.id = canvas.create_oval(0,0,20,20,fill=color)
        self.canvas.move(self.id,winW/2,winH/2)
        startPos = [-4,-3,-2,-1,1,2,3,4]
        shuffle(startPos[0])
        self.x = startPos[0]
        self.y = -step
        self.notTouchBottom =True
    def hitRacket(self,ballpos):
        racketPos = self.canvas.coords(self.rackt.id)
        if ballPos[2] >= racketPos[0] and ballPos[0] <= racketPos[2]:
            if ballPos[3] >= racketPos[1] and ballPos[3] <= racketPos[3]:
                return True
        return False
    def ballMove(self):
        self.canvas.move(self.id,self.x,self.y)
        ballPos = self.canvas.coords(self.id)
        if ballPos[0] <= 0:
            self.x = step
        if  ballPos[1] <=0:
            self.y = step
        if ballPos[2] >winW:
            self.x = -step
        if ballPos[3] >= winH:
            self.y = -step
        if ballPos[3] >= winH:
         self.notTouchBottom = False

 class Racket:
    def __int__(self,canvas,color):
        self.canvas = canvas
        self.id = canvas.create_rectangle(0,0,100,15, fill=color)
        self.canvas.move(self.id,270,400)
        self.x = 0
        self.canvas.bind_all('<KeyPress-Right>',self.moveRight)
        self.canvas.bind_all('<KeyPress-Left>',self.moveLeft)
    def racketMove(self):
        self.canvas.move(self.id,self.x,0)
        racketPos = self.canvas.coords(self.id)
        if racketPos[0] <=0:
            self.x = 0
        elif racketPos[2] >= winW:
            self.x = 0
    def moveLeft(self,event):
        self.x = -3
    def moveRight(self,event):
        self.x = 3

winW = 640
winH = 480
step = 3
speed = 0.01
tk = Tk()
tk.title("Bouncing Ball")
tk.wm_attributes('-topmost',1)
canvas = Canvas(tk,width=winW,height=winH)
canvas.pack()
tk.update()
racket = Racket(canvas,'purple')
ball = Ball(canvas,'yellow',winW,winH,racket)

    while ball.notTouchBottom:
         ball.ballMove()
         racket.racketMove()
         tk.update()
         time.sleep(speed)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值