用python编写一个简单的弹球游戏

这是学习python时用来练习的一个项目,作为笔记。
最终是实现一个简单的弹球游戏,效果图如下:

源代码:

#无限命版的弹球游戏python代码
from tkinter import *  # 来源于python的标准库,GUI
import random
import time# 创建Ball类,对小球进行定义
class Ball:def __init__(self, canvas, paddle, color):  # 初始化函数self.canvas = canvas  # 把对象变量canvas赋值给对象变量canvasself.paddle = paddle #把对象变量赋值给paddleself.id = canvas.create_oval(10, 10, 25, 25, fill=color)  # 函数creat_oval返回的是创建目标的IDself.canvas.move(self.id, 245, 100)  # 移动小球到画布中心starts = [-3, -2, -1, 1, 2, 3]  # 定义一个列表存初始速度random.shuffle(starts)  # 把列表里面的数随机排列self.x = starts[0]  # 取列表中的第一个数self.y = -3  # 把小球向上的速度变为3,初始的合速度变大self.canvas_height = self.canvas.winfo_height()  # 获取当前画布高度并赋值给对象变量canvas_heightself.canvas_width = self.canvas.winfo_width()self.hit_bottom = Falsedef hit_paddle(self, pos): #定义弹球击打操作,当两个图像有相交时返回true,否则falsepaddle_pos = self.canvas.coords(self.paddle.id)if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:if paddle_pos[1] <= pos[3] <= paddle_pos[3]:return Truereturn False#在画布上按照定义的要求画出小球def draw(self):self.canvas.move(self.id, self.x, self.y)  # 使小球移动,画布上move函数的调用,传入的参数是x,ypos = self.canvas.coords(self.id)  # 创建变量并将画布函数coords赋值给pos,通过圆的ID返回一个列表,4个数分别是左上角和右下角的坐标if pos[1] <= 0:#列表pos中0和1的位置是圆的左上方的坐标,2和3的位置是右下方的坐标self.y = 4  # 更改数字可以实现小球的不同方向的变速if pos[3] >= self.canvas_height:
#            self.hit_bottom = True #如果想实现小球到画布底端就gameover可以加上这行,同时注释掉下一行self.y = -4if self.hit_paddle(pos) == True:#实现球与球拍接触时反弹self.y = -4if pos[0] <= 0:self.x = 4if pos[2] >= self.canvas_width:self.x = -4# 创建球拍类
class Paddle:def __init__(self, canvas, color):self.canvas = canvas #和球类类似,先传入画布对象变量self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)self.canvas.move(self.id, 200, 300)#游戏开始时设置球拍在初始位置self.x = 0self.canvas_width = self.canvas.winfo_width()#设置球拍左右的移动范围self.canvas.bind_all('<KeyPress-Left>', self.turn_left)#把按键和球拍类左右键分别进行绑定self.canvas.bind_all('<KeyPress-Right>', self.turn_right)def draw(self): #在画布上画出球拍self.canvas.move(self.id, self.x, 0)pos = self.canvas.coords(self.id)if pos[0] <= 0:#这两个if语句用来设置球拍边界self.x = 0elif pos[2] >= self.canvas_width:self.x = 0#定义左右键函数def turn_left(self, evt):self.x = -5#改变数值可以实现球拍灵活度的改变def turn_right(self, evt):self.x = 5# 创建游戏画布
tk = Tk()  # 创建tk对象
tk.title("变速版弹球游戏")  # 使用tk对象中的title函数给窗口加标题
tk.resizable(0, 0)  # 使窗口大小在水平和垂直方向上都不可以改变
tk.wm_attributes("-topmost", 1)  # 把包含我们画布的窗口放到所有其他窗口之前
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)  # bd=0是确保在画布之外没有边框
canvas.pack()  # 让画布按照前一行给出的宽度和高度参数来调整其自身大小
tk.update()  # 让tkinter为游戏中的动画做好初始化paddle = Paddle(canvas, 'blue')
ball = Ball(canvas, paddle, 'red')  # 创建一个Ball类的对象while 1:  # 动画循环,让tkinter一直画图if ball.hit_bottom == False:#如果球没有被接到,gameoverball.draw()paddle.draw()tk.update_idletasks()tk.update()time.sleep(0.01)  # 循环一次,python自己休息的时间,可以理解为一直画图的时候,间隔时间

用python编写一个弹球游戏相关推荐

  1. python编写一个弹球游戏_Python实战案例:用Python写一个弹球游戏,就是这么强

    我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python ...

  2. python编写一个弹球游戏_python pygame实现挡板弹球游戏

    学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: # -*- coding:utf-8 -*- from sys import exit import pyg ...

  3. python弹球游戏实验报告_Python实战案例:用Python写一个弹球游戏,就是这么强

    我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python ...

  4. python编写一个赛车游戏

    好的,下面是一个简单的赛车游戏的例子.这个游戏有一辆赛车和一条跑道,赛车可以向左或向右移动.每次移动后,赛车的位置会更新,并在屏幕上显示赛车的当前位置.游戏结束时,会显示游戏的得分. 首先,我们需要定 ...

  5. 父亲节礼物:用Python编写一个小型游戏

    名字:阿玥的小东东 学习:Python.C/C++ 主页链接:阿玥的小东东的博客_CSDN博客-python&&c++高级知识,过年必备,C/C++知识讲解领域博主 目录 安装必要的库 ...

  6. python猜拳游戏编程代码_求助,用python编写一个猜拳游戏程序,要求有这样的开头...

    展开全部 #coding=utf8 import random changes = ["", "石头2113", "剪子", "布 ...

  7. 用python 编写一个简单的游戏

    This blog will memory my work and process with the interesting skill. 用python 编写一个简单的游戏 这是一个非常简单的游戏, ...

  8. 【六一特别文章】Python编写一个六一儿童节问答小游戏及趣味比赛

    随着六一儿童节的到来,我们可以为孩子们编写一个有趣的小游戏,让他们在游戏中学习有关六一儿童节的知识.本文将介绍如何用Python编写一个六一儿童节问答小游戏及趣味比赛. 首先,我们需要准备一些有关六一 ...

  9. python写游戏脚本-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  10. python编程小游戏-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

最新文章

  1. linux 增加lv大小,Linux增加LV(逻辑卷)容量
  2. [CQOI2018] 解锁屏幕
  3. 转载 Net多线程编程—System.Threading.Tasks.Parallel
  4. .net Core把一个list集合里面的所有字段的数值汇总
  5. 技术改变生活 浅谈阿里云混合云的探索与实践
  6. optional java_使用Java时查看Optional数据类型和一些反模式
  7. Node.js 借助art-template进行后端渲染并呈现页面到前端
  8. 将一个数转化为二进制java_java将一个整数转化成二进制代码示例
  9. java urlconnection cookie_使用HTTPUrlConnection时如何保留cookie?
  10. android表情转码,UCS-4 android/ios微信emoji表情转码
  11. pandas 两个DataFrame带条件匹配
  12. 大数据平台任务调度与监控系统
  13. 信息学奥赛一本通 1325:【例7.4】 循环比赛日程表
  14. 一位豪气的老板,送东西送到让客户都不好意思了,当天收款100万!
  15. Agile在线项目管理平台
  16. 【报告分享】2020-2021年中国购物中心消费者洞察报告-中国连锁经营协会(附下载)
  17. 关于学习Laravel5.8时的知识总结及遇到的问题(持续更新)
  18. java基于springboot校园视频监控管理系统
  19. 安装配置jdk--解压版
  20. arcmap提取dem高程_如何使用ArcGIS从DEM数据中提取水系

热门文章

  1. VC++6.0软件安装教程(win10亲测可用)
  2. 软件测试之App测试-用户体验测试
  3. GitHub上最全中华古诗词数据库又火了
  4. steam怎么设公用计算机,steam如何设置家庭共享?steam设置家庭共享的方法
  5. 吴琦:没有被“双非学历”困住的边界突破者
  6. 常用的富文本编辑器插件
  7. “抖音群控系统”教你如何抓住短视频时代风口,进行流量红利变现
  8. Maxthon2.5.10.2576 beta苦菜花增强优化防假死正式版(1031)
  9. deepinv2 添加打印机_Deepin系统上安装使用HP惠普打印机的方法
  10. Android Studio修改app图标以及名字