Python实现的弹球小游戏示例


Posted in Python onAugust 01, 2017

本文实例讲述了Python实现的弹球小游戏。分享给大家供大家参考,具体如下:

弹球

1. Ball 类

draw负责移动Ball
碰撞检测,反弹,Ball检测Paddle

2.Paddle类

draw负责移动Paddle
碰撞检测,确定能不能继续
监听键盘事件

3.主循环

绘制Ball和Paddle
update
sleep

代码

from Tkinter import *
import random
import time
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, 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
  def draw(self):
    self.canvas.move(self.id, self.x, self.y)
    pos = self.canvas.coords(self.id)#top-left bottom-right
    if (pos[1] <= 0 or self.hit_paddle(pos) == True):
      self.y = -self.y
    if (pos[0] <= 0 or pos[2] >= self.canvas_width):
      self.x = -self.x
    if (pos[3] >= self.canvas_height):
      self.hit_bottom = True
  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
class Paddle:
  def __init__(self, canvas, color):
    self.canvas = canvas
    self.id = canvas.create_rectangle(0, 0, 100, 10, fill = color)
    self.x = 0
    self.canvas.move(self.id, 200, 300)
    self.canvas_width = self.canvas.winfo_width()
    self.canvas.bind_all("<Key-Left>", self.turn_left)
    self.canvas.bind_all("<Key-Right>", self.turn_right)
  def draw(self):
    pos = self.canvas.coords(self.id)
    if (pos[0] + self.x >= 0 and pos[2] + self.x <= self.canvas_width):
      self.canvas.move(self.id, self.x, 0)
    #self.x = 0
  def turn_left(self, event):
    self.x = -4
  def turn_right(self, event):
    self.x = 4
tk = Tk()
tk.title("Game")
tk.resizable(0, 0)#not resizable
tk.wm_attributes("-topmost", 1)#at top
canvas = Canvas(tk, width = 500, height = 500, bd = 0, highlightthickness = 0)
canvas.pack()
tk.update()#init
paddle = Paddle(canvas, 'blue')
ball = Ball(canvas, paddle, 'red')
while 1:
  if (ball.hit_bottom == False):
    ball.draw()
    paddle.draw()
  tk.update_idletasks()
  tk.update()
  time.sleep(0.01)

运行效果如下图:

Python实现的弹球小游戏示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python多线程编程(五):死锁的形成
Apr 05 Python
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
python3抓取中文网页的方法
Jul 28 Python
python技能之数据导出excel的实例代码
Aug 11 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
python脚本实现验证码识别
Jun 07 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
Python Selenium参数配置方法解析
Jan 19 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
Python 中的 copy()和deepcopy()
Nov 07 Python
Python的mysql数据库的更新如何实现
Jul 31 #Python
Python操作csv文件实例详解
Jul 31 #Python
Python实现字典去除重复的方法示例
Jul 31 #Python
浅析使用Python操作文件
Jul 31 #Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 #Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 #Python
深入探究Django中的Session与Cookie
Jul 30 #Python
You might like
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
Vue header组件开发详解
2018/01/26 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
python自动安装pip
2014/04/24 Python
python中字符串的操作方法大全
2018/06/03 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
python 基于opencv去除图片阴影
2021/01/26 Python
优秀中学生事迹材料
2014/01/31 职场文书
平安工地汇报材料
2014/08/19 职场文书
出国签证在职证明
2014/09/20 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
小学生毕业评语
2014/12/26 职场文书
音乐课外活动总结
2015/05/09 职场文书
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏