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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
Linux下编译安装MySQL-Python教程
Feb 02 Python
简单的Python的curses库使用教程
Apr 11 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
python查看微信好友是否删除自己
Dec 19 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
python3.7简单的爬虫实例详解
Jul 08 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
python中把元组转换为namedtuple方法
Dec 09 Python
python如何利用traceback获取详细的异常信息
Jun 05 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP微信API接口类
2016/08/22 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
简单谈谈python中的Queue与多进程
2016/08/25 Python
Python查询IP地址归属完整代码
2017/06/21 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
迪拜航空官方网站:flydubai
2017/04/20 全球购物
中英文求职信范文
2014/01/27 职场文书
老公爱的承诺书
2014/03/31 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
施工员岗位职责范本
2015/04/11 职场文书
民事代理词范文
2015/05/25 职场文书
导游词之介休绵山
2019/12/31 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
python保存图片的四个常用方法
2022/02/28 Python
golang语言指针操作
2022/04/14 Golang