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 的枚举 Enum
Jun 12 Python
Python探索之Metaclass初步了解
Oct 28 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
python编写简单端口扫描器
Sep 04 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
Python 如何测试文件是否存在
Jul 31 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
Python生成九宫格图片的示例代码
Apr 14 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
May 23 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
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php创建图像具体步骤
2017/03/13 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
基于JavaScript实现抽奖系统
2018/01/16 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python如何实现一个刷网页小程序
2018/11/27 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
django迁移文件migrations的实现
2020/03/31 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
会计学专业学生的求职信范文
2014/01/27 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
2014公司年终工作总结
2014/12/19 职场文书
党员证明模板
2015/06/19 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
python中使用redis用法详解
2022/12/24 Redis