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中取整的几种方法小结
Jan 06 Python
Python 调用Java实例详解
Jun 02 Python
Python进程间通信Queue实例解析
Jan 25 Python
Python并行分布式框架Celery详解
Oct 15 Python
python实现朴素贝叶斯算法
Nov 19 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
pytorch使用指定GPU训练的实例
Aug 19 Python
Python 日志logging模块用法简单示例
Oct 18 Python
python集合删除多种方法详解
Feb 10 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 Python
详解Django中 render() 函数的使用方法
Apr 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 Smarty初体验二 获取配置信息
2011/08/08 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
PHP实现微信退款功能
2018/10/02 PHP
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
vue中的适配px2rem示例代码
2018/11/19 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
劲霸男装广告词改编版
2014/03/21 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2014年班组工作总结
2014/11/20 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
交通事故责任认定书
2015/08/06 职场文书
小学三年级作文之写景
2019/11/05 职场文书
php去除deprecated的实例方法
2021/11/17 PHP