python3实现弹弹球小游戏
本文实例为大家分享了python3实现弹弹球小游戏的具体代码,供大家参考,具体内容如下
fromtkinterimport*
fromtkinterimportmessagebox
importrandom
importtime
fromPILimportImage,ImageTk
importsys
classGame:
def__init__(self):
self.tk=Tk()
self.times=0
sw=self.tk.winfo_screenwidth()
sh=self.tk.winfo_screenheight()
image=Image.open(r'02.jpg')
background_image=ImageTk.PhotoImage(image)
ww=background_image.width()
wh=background_image.height()
x=(sw-ww)/2
y=(sh-wh)/2
self.tk.geometry("%dx%d+%d+%d"%(ww,wh,x,y))
self.tk.title('欢迎进入弹弹弹')
background_label=Label(self.tk,image=background_image)
background_label.place(x=0,y=0,relwidth=1,relheight=1)
self.tk.resizable(False,False)
self.tk.wm_attributes("-topmost",1)#attop
btn1=Button(self.tk,text='减少难度',background='#FFFF67',
activebackground='#3EC23B',command=self.test1)
btn2=Button(self.tk,text='增加难度',background='#FFFF67',
activebackground='#3EC23B',command=self.test2)
btn1.place(x=380,y=10,width=80,height=30)
btn2.place(x=500,y=10,width=80,height=30)
self.canvas=Canvas(self.tk,width=500,height=400,
bd=0,highlightthickness=0,background='#FFFFFF')
self.canvas.place(x=190,y=90,width=500,height=400)
self.tk.update()
self.xunhuan()
defxunhuan(self):
try:
paddle=Paddle(self.canvas,'green',100)
ball=Ball(self.canvas,paddle,'#D11C43',0)
whileTrue:
ifball.hit_bottom==False:
ball.draw()
paddle.draw()
else:
b=messagebox.askyesno(
'失败',message="您的分数为:"+str(ball.score)+"\n是否重新开始游戏?")
ifbool(b)isTrue:
paddle.canvas.delete(paddle.id)
self.sever()
else:
sys.exit()
self.tk.update_idletasks()
self.tk.update()
time.sleep(0.01+self.times)
except:
sys.exit('游戏已退出!')
defsever(self):
self.xunhuan()
deftest1(self):
self.times+=0.001
deftest2(self):
self.times-=0.001
classBall:
def__init__(self,canvas,paddle,color,score):
self.score=0
self.canvas=canvas
self.paddle=paddle
self.id=canvas.create_oval(
20,20,35,35,fill=color,outline='green')
self.canvas.move(self.id,245,100)
startx=[-3,-2,-1,1,2,3]
random.shuffle(startx)
self.x=startx[0]
self.y=-3
self.canvas_height=self.canvas.winfo_height()
self.canvas_width=self.canvas.winfo_width()
self.hit_bottom=False
b=messagebox.askyesno('game','游戏是否开始?')
ifbool(b)isTrue:
self.draw()
else:
sys.exit()
defdraw(self):
self.canvas.move(self.id,self.x,self.y)
pos=self.canvas.coords(self.id)
ifpos[1]<=0orself.hit_paddle(pos)==True:
self.y=-self.y
ifpos[0]<=0orpos[2]>=self.canvas_width:
self.x=-self.x
ifpos[3]>=self.canvas_height:
self.hit_bottom=True
defhit_paddle(self,pos):
paddle_pos=self.canvas.coords(self.paddle.id)
ifpos[2]>=paddle_pos[0]andpos[0]<=paddle_pos[2]:
ifpos[3]>=paddle_pos[1]andpos[3]<=paddle_pos[3]:
self.score+=1
returnTrue
returnFalse
classPaddle:
def__init__(self,canvas,color,width):
self.canvas=canvas
self.id=canvas.create_rectangle(0,0,width,10,fill=color)
self.x=0
self.y=0
self.canvas.move(self.id,200,300)
self.canvas_width=self.canvas.winfo_width()
self.canvas.bind_all("",self.turn_left)
self.canvas.bind_all("",self.turn_right)
defdraw(self):
pos=self.canvas.coords(self.id)
ifpos[0]+self.x>=0andpos[2]+self.x<=self.canvas_width:
self.canvas.move(self.id,self.x,0)
defturn_left(self,event):
self.x=-4
defturn_right(self,event):
self.x=4
defmain():
game=Game()
if__name__=='__main__':
main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。