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 生成不重复的随机数的代码
May 15 Python
python服务器与android客户端socket通信实例
Nov 12 Python
Python中模块string.py详解
Mar 12 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
详解django三种文件下载方式
Apr 06 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
Python微信操控itchat的方法
May 31 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
Django返回HTML文件的实现方法
Sep 17 Python
Python colormap库的安装和使用详情
Oct 06 Python
Python字典dict常用方法函数实例
Nov 09 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
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
jQuery 动态酷效果实现总结
2009/12/27 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
Js四则运算函数代码
2012/07/21 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Python中内建函数的简单用法说明
2016/05/05 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python实现二分查找算法
2017/09/21 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
生产副总岗位职责
2013/11/28 职场文书
2014年教师培训的自我评价
2014/01/03 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
财务情况说明书范文
2014/05/06 职场文书
大学生求职信
2014/06/17 职场文书