python3实现弹弹球小游戏


Posted in Python onNovember 25, 2019

本文实例为大家分享了python3实现弹弹球小游戏的具体代码,供大家参考,具体内容如下

from tkinter import *
from tkinter import messagebox
import random
import time
from PIL import Image, ImageTk
import sys
 
 
class Game:
  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) # at top
    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()
 
  def xunhuan(self):
    try:
      paddle = Paddle(self.canvas, 'green', 100)
      ball = Ball(self.canvas, paddle, '#D11C43', 0)
      while True:
        if ball.hit_bottom == False:
          ball.draw()
          paddle.draw()
        else:
          b = messagebox.askyesno(
            '失败', message="您的分数为:" + str(ball.score)+"\n是否重新开始游戏?")
          if bool(b) is True:
            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('游戏已退出!')
 
  def sever(self):
    self.xunhuan()
 
  def test1(self):
    self.times += 0.001
 
  def test2(self):
    self.times -= 0.001
 
 
class Ball:
  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', '游戏是否开始?')
    if bool(b) is True:
      self.draw()
    else:
      sys.exit()
 
  def draw(self):
    self.canvas.move(self.id, self.x, self.y)
    pos = self.canvas.coords(self.id)
    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]:
        self.score += 1
        return True
    return False
 
 
class Paddle:
  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("<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)
 
  def turn_left(self, event):
    self.x = -4
 
  def turn_right(self, event):
    self.x = 4
 
 
def main():
  game = Game()
 
 
if __name__ == '__main__':
  main()

python3实现弹弹球小游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Django框架下管理站点的基本方法
Jul 17 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
Python中int()函数的用法浅析
Oct 17 Python
python 接口测试response返回数据对比的方法
Feb 11 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
python检测IP地址变化并触发事件
Dec 26 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
python数据化运营的重要意义
Nov 25 #Python
python实现拉普拉斯特征图降维示例
Nov 25 #Python
python模块hashlib(加密服务)知识点讲解
Nov 25 #Python
Python3如何对urllib和urllib2进行重构
Nov 25 #Python
python pygame实现球球大作战
Nov 25 #Python
Python内置加密模块用法解析
Nov 25 #Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 #Python
You might like
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
PHP类中Static方法效率测试代码
2010/10/17 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
JS数组方法slice()用法实例分析
2020/01/18 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
python检测远程服务器tcp端口的方法
2015/03/14 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
tensorflow 查看梯度方式
2020/02/04 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
公益活动邀请函
2014/02/05 职场文书
发展部经理职责规定
2014/02/22 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
购房协议书范本
2014/04/11 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书