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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。