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判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
基于Python代码编辑器的选用(详解)
Sep 13 Python
python批量替换页眉页脚实例代码
Jan 22 Python
详解Python如何生成词云的方法
Jun 01 Python
浅谈flask源码之请求过程
Jul 26 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
Python中新式类与经典类的区别详析
Jul 10 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
Python控制多进程与多线程并发数总结
2016/10/26 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
python如何实现异步调用函数执行
2019/07/08 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
详解Python流程控制语句
2020/10/28 Python
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
架构师岗位职责
2013/11/18 职场文书
教师个人自我评价
2015/03/04 职场文书
回复函格式及范文
2015/07/14 职场文书
创业计划书之便利店
2019/09/05 职场文书
宝塔更新Python及Flask项目的部署
2022/04/11 Python