本文实例为大家分享了python3.6实现弹跳小球游戏的具体代码,供大家参考,具体内容如下
import random import time from tkinter import * #下面定义一个球的类,有canvas和color两个对象 class Ball: #定义一个Ball类的函数 def __init__(self,canvas,paddle,color):#这是Ball类的属性函数,Ball类下的函数都有这些性质 self.canvas=canvas self.paddle=paddle self.id=canvas.create_oval(10,10,25,25,fill=color)#返回所绘小球的调用值放入对象self.id self.canvas.move(self.id,245,100) #移动小球到(245,100)坐标处, starts=[-3,-2,-1,1,2,3] random.shuffle(starts) self.x=starts[0] #使得小球左右方向运动随机 self.y=-3 #默认开始的小球向上方运动 self.canvas_height=self.canvas.winfo_height()#画布高度函数winfo_height()返回值放入canvas_height对象中 self.canvas_width=self.canvas.winfo_width() #winfo_width()返回画布宽度放入canvas_width对象中 self.hit_bottom=False #设定hit_bottom初始值为false def hit_paddle(self,pos): #声明函数,以供调用 paddle_pos=self.canvas.coords(self.paddle.id) #将球拍的(x1,y1)(x2,y2)的坐标放到paddle_pos中 if pos[2]>=paddle_pos[0] and pos[0]<=paddle_pos[2]: # if pos[3]>=paddle_pos[1] and pos[3]<=paddle_pos[3]: #比较小球y轴是否在球拍y轴内 return True #表示小球碰到了球拍 return False #表示小球没有碰到球拍 def draw(self): #声明draw函数, self.canvas.move(self.id,self.x,self.y) #移动小球,移动速度为(self.x,self.y),在init中的属性可以直接用 pos=self.canvas.coords(self.id)#把小球的左上角和右下角的坐标以列表形式(可能元组)放入pos对象中 if pos[1]<=0: #如果小球碰到画布上方 self.y=3 #则改变移动方向向下方 if pos[3]>=self.canvas_height: #如果小球碰到画布底端 则返回hit_bottom为True self.hit_bottom=True if self.hit_paddle(pos)==True: #小球碰到了球拍,则改变Y轴方向向上运动 self.y=-3 if pos[0]<=0: #如果小球碰到了画布左边,则把X轴速度改成每次向右3个像素 self.x=3 if pos[2]>=self.canvas_width: #如果小球碰到了画布右边,则把速度改成每次向左3个像素 self.x=-3 class Paddle: #定义一个paddle类 def __init__(self,canvas,color): #paddle类的属性函数,默认有两个变量画布和颜色 self.canvas=canvas #将canvas对象赋给self.canvas self.id=canvas.create_rectangle(0,0,100,10,fill=color) #创建球拍,将球拍的调用编号存入self.id self.canvas.move(self.id,200,300) #将球拍移动到(200,300)处 self.x=0 # self.canvas_width=self.canvas.winfo_width() #将画布的宽度放入canvas_width对象 self.canvas.bind_all('<KeyPress-Left>',self.turn_left) #用bind_all()函数绑定键盘左键与tun_left函数 self.canvas.bind_all('<KeyPress-Right>',self.turn_right) #绑定键盘右键与turn_right函数 def draw(self): #声明一个draw函数 self.canvas.move(self.id,self.x,0) #左右移动球拍的速度为self.x,默认不动 pos=self.canvas.coords(self.id) #将球拍的左上角和右下角的坐标存入pos对象中 if pos[0]<=0: #如果球拍x轴小于0,则不再向右移动 self.x=0 elif pos[2]>=self.canvas_width: #如果球拍要超过画布右侧了,则球拍的移动速度变为0 self.x=0 def turn_left(self,evt):#这里的evt是调用方传过来的参数,改变球拍的移动速度向左, self.x=-5 def turn_right(self,evt): #改变球拍的移动速度向右每次5个像素 self.x=5 #创建框架并且命名和固定,然后创建该框架的画布 tk=Tk() #创建框架对象tk tk.title('Game') #框架对象tk显示的名字为'game' tk.resizable(0,0) #固定框架 tk.wm_attributes('-topmost',1) #显示在最外层 canvas=Canvas(tk,width=500,height=400,bd=0,highlightthickness=0) #创建画布canvas,属于tk框架对象, canvas.pack() #显示画布的变化 tk.update() #显示框架的变化 #把类赋值给对象ball,如果调用了ball就可以实现该类的作用 paddle=Paddle(canvas,"blue") #调用拍的类给对象paddle用 ball=Ball(canvas,paddle,'green') #调用球的类给对象ball用 while True: #要注意while语句以防止死循环,先设置为真 if ball.hit_bottom==False: #没有碰到底部的话执行下面的语句 ball.draw() #调用ball对象的函数draw() paddle.draw()#调用paddle对象的函数draw() tk.update_idletasks() tk.update() #更新框架 time.sleep(0.01) #睡眠0.01秒 elif ball.hit_bottom==True: #要是小球接触了底部 canvas.create_text(200,100,text='Aha,you lose it,\nHow about try again?',font=('Times',22)) #在(200,100)坐标处创建文本‘...',字号22号 tk.update() #更新内容
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]