python编写弹球游戏的实现代码


Posted in Python onMarch 12, 2018

 弹球游戏:

from tkinter import *       
import time 
import random 
tk=Tk()    #创建一个界面 
tk.title("弹球游戏") 
canvas=Canvas(tk,width=800,height=600,bg="skyblue",bd=0,highlightthickness = 0) 
tk.resizable(0,0) #表示边框不能被拉伸 
canvas.pack() #使部件放在主窗口中 
tk.update()  #刷新界面 
class Ball: #球的类 
  def __init__(self,canvas,paddle,color): 
    self.canvas=canvas 
    self.paddle=paddle 
    self.id=canvas.create_oval(10,10,25,25,fill=color) #在画布上画出一个球 
    self.canvas.move(self.id,240,100)   #初始球的位置 
    stat=[-3,-2,-1,1,2,3]   
    random.shuffle(stat) 
    self.x=stat[0] 
    self.y=-3 
    self.canvas_height=self.canvas.winfo_height() #获取画布的的高度 
    self.canvas_width=self.canvas.winfo_width() 
    self.hit_bottom=False  
  def hit_paddle(self, pos):    #判断输赢 
    paddle_pos = self.canvas.coords(self.paddle.id ) 
    if pos[2]>= paddle_pos[0] and pos[0]<= paddle_pos[2]: 
      if pos[3]>= paddle_pos[1] and pos[3]<= paddle_pos[3]: 
        return True 
    return False 
  def draw(self): #小球移动 
    self.canvas.move(self.id,self.x,self.y) 
    pos=self.canvas.coords(self.id) 
    if pos[1]<=0: #判断小球是否碰到边框,如果碰到回弹 
      self.y=3 
    if pos[3]>=self.canvas_height: #判断球拍是否有接到球 ,如果没接到游戏结束 
      self.hit_bottom=True 
    if self.hit_paddle(pos)==True: #判断求是否碰到了球拍,如果碰到了使小球回弹 
      self.y=-3 
    if pos[0]<=0: #来判断球拍是不是碰到了边框,, 
      self.x=3 
    if pos[2]>=self.canvas_width: 
      self.x=-3 
class Paddle: #球拍的的类 
  def __init__(self,canvans,color): 
    self.canvas=canvas 
    self.id=canvas.create_rectangle(0,0,150,10,fill=color) 
    self.canvas.move(self.id,400,450) 
    self.x=0 
    self.canvas_width=self.canvas.winfo_width() 
    self.canvas.bind_all("<KeyPress-Left>",self.turn_left) #通过按键来使球拍移动 
    self.canvas.bind_all("<KeyPress-Right>", self.turn_right) 
  def turn_left(self,event): #每次按键球拍移动的距离 
    self.x=-5 
  def turn_right(self,event): 
    self.x=5 
  def draw(self): #球拍移动的方法 
    pos=self.canvas.coords(self.id) 
    self.canvas.move(self.id, self.x, 0) 
    if pos[0]<=0: 
      self.x=0 
    if pos[2]>=self.canvas_width: 
      self.x=0 
paddle=Paddle(canvas,"blue") 
ball=Ball(canvas,paddle,"red") 
while True: #用循环 如果球怕没有接到球就推出 
  if ball.hit_bottom==False: 
    ball.draw() 
    paddle.draw() 
  else: 
    break 
  tk.update_idletasks()# 不停的刷新画布 
  tk.update() 
  time.sleep(0.01)

总结

以上所述是小编给大家介绍的python编写弹球游戏的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python操作摄像头截图实现远程监控的例子
Mar 25 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python读大数据txt
Mar 28 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
Python解决八皇后问题示例
Apr 22 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
Python3实现飞机大战游戏
Apr 24 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
Python合并pdf文件的工具
Jul 01 Python
python学生管理系统代码实现
Apr 05 #Python
python图书管理系统
Apr 05 #Python
怎么使用pipenv管理你的python项目
Mar 12 #Python
python实现图书管理系统
Mar 12 #Python
python实现快速排序的示例(二分法思想)
Mar 12 #Python
Python中的pack和unpack的使用
Mar 12 #Python
python文本数据相似度的度量
Mar 12 #Python
You might like
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
一个JavaScript的求爱小特效
2014/05/09 Javascript
js动态切换图片的方法
2015/01/20 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
Python pass 语句使用示例
2014/03/11 Python
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
Python日志模块logging简介
2015/04/13 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
python3.x实现发送邮件功能
2018/05/22 Python
python实现简单登陆系统
2018/10/18 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
毕业生就业意向书
2014/04/01 职场文书
小学生期末评语大全
2014/04/21 职场文书
2014年资料员工作总结
2014/11/18 职场文书
孔子观后感
2015/06/08 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Python加密技术之RSA加密解密的实现
2022/04/08 Python