python实现弹球小游戏

您所在的位置:网站首页 弹跳球的游戏 python实现弹球小游戏

python实现弹球小游戏

2024-07-11 13:51:25| 来源: 网络整理| 查看: 265

跟着趣味开发python一起实现的弹球小游戏

游戏运行效果

 实现流程

1.创建游戏画布(创建ball类)

2.增加几个动作(让小球移动、让小球来回反弹,改变小球的起始方向)

3.加上球拍,使球拍左右移动(循环移动)

4.增加输赢因素(对小球位置进行判断)

创建游戏画布

导入工具包tkinter、random、time

from tkinter import * # 弹球游戏的画布 import random import time

通过tk.title(“”) 用tk对象中的title函数给窗口加上一个标题“弹球小游戏”.

我们用resizable函数来使窗口的大小不可调整。其中0,0的的意思是,窗口的大小在水平方向上和垂直方向上都不能改变.

用canvas=来创建canvas对象.

canvas.pack()这一行让画布按照前一行给的宽度和高度的参数来调整其自身大小.

tk.update() 让tkinter为游戏中的动画做好初始化.如果没有最后这一行,我们看到的东西就会和期望的不一样.

tk = Tk() tk.title("弹球小游戏") tk.resizable(0, 0) tk.wm_attributes("-topmost", 1) canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0) canvas.pack() tk.update()

1. 创建一个叫Ball 的类,它有两个参数,一个是画布,另一个是球的颜色.

2.把画布保存到一个对象变量中.

3.在画布上画一个用颜色参数作为填充色的小球.

4.把tkinter画小球时所返回的ID保存起来,因为我们要用它来移动屏幕上的小球.

class Ball: def __init__(self, canvas, paddle, color): self.canvas = canvas self.paddle = paddle self.id = canvas.create_oval(10, 10, 25, 25, fill=color) self.canvas.move(self.id, 245, 100) starts = [-3, -2, -1, 1, 2, 3] random.shuffle(starts) self.x = starts[0] self.y = -3 #把y改成-3 ,让小球飞快一点,我们需要再改动几个地方来保证小球不会从屏幕两边消失。 self.canvas_height = self.canvas.winfo_height() self.canvas_width = self.canvas.winfo_width() #在_init_函数的结尾加上下面的代码来把画布的宽度保存到一个新的对象变量canvas_width 中 self.hit_bottom = False

我们需要增加一个动画循环 “主循环”是程序的中心部分,一般来讲它控制程序中大部分的行为。 我们的主循环目前只是让tkinter 重画屏幕。这个循环一直运行下去,不停地让tkinter重画屏幕,然后休息百分之一秒.(要把它加到程序的最后面)

paddle = Paddle(canvas, 'green') # 创建一个绿色的球拍 ball = Ball(canvas, paddle, 'yellow') # 创建一个黄色的小球 while 1: if ball.hit_bottom == False: ball.draw() paddle.draw() tk.update_idletasks() tk.update() time.sleep(0.01) 增加几个动作

我们给move传了3个参数。id是椭圆形的ID,还有x,y。x是指不要水平移动,y是指在屏幕上向上移动一个像素.

在draw函数中使用这个新对象变量来判断小球是否撞到了画布的顶部或底部.

我们新增的这段代码是说,如果hit_paddle返回真的话,把对象变量用self.y = -3 来变成-3,从而让他改变方向.

def draw(self): self.canvas.move(self.id, self.x, self.y) pos = self.canvas.coords(self.id) if pos[1] = self.canvas_height: self.hit_bottom = True if self.hit_paddle(pos) == True: self.y = -3 if pos[0] = self.canvas_width: self.x = -3 让小球反弹

如果没有东西来击打弹回小球的话,那可就没有什么意思了

这些新加的代码和Ball类几乎一模一样,只是我调用了create_rectangle,而且把长方形移到坐标200,300、横向200像素,纵向300像素

首先要在Paddle类的_init_函数中加上对象变量x,还有一个保存画布宽度的变量,这和我们在前面Ball类中做的一样

用以下两行代码来把正确的按键绑定到这两个函数上。 把 Paddle 类中的画数tum_left 绑定到左方向键。 然后我们把函数 tum right 绑定到右方向键。

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 = 0 self.canvas_width = self.canvas.winfo_width() self.canvas.bind_all('', self.turn_left) self.canvas.bind_all('', self.turn_right)

 用2个函数来改变向左(turn_left)和向右(turn_right)的方向。把它们加在draw函数的后面

def turn_left(self, evt): self.x = -5 def turn_right(self, evt): self.x = 5 增加输赢因数

现在要把程序变成一个好玩的游戏,而且不止是弹来弹去的小球和一个球拍。游戏加一点输赢因素

循环会不断地检查小球是否撞到了屏幕的底端(hit_bottom)。假设小球还没有碰到底部,代码会让小球和球拍一直移动,正如在if语句中看到的一样。只有在小球没有触及底端时才会移动小球和球拍。当小球和球拍停止运动时游戏就结束.

代码展示(需要自取)

from tkinter import * # 弹球游戏的画布 import random import time class Ball: def __init__(self, canvas, paddle, color): self.canvas = canvas self.paddle = paddle self.id = canvas.create_oval(10, 10, 25, 25, fill=color) self.canvas.move(self.id, 245, 100) starts = [-3, -2, -1, 1, 2, 3] random.shuffle(starts) self.x = starts[0] self.y = -3 self.canvas_height = self.canvas.winfo_height() self.canvas_width = self.canvas.winfo_width() self.hit_bottom = False def hit_paddle(self, pos): paddle_pos = self.canvas.coords(self.paddle.id) if pos[2] >= paddle_pos[0] and pos[0] = paddle_pos[1] and pos[3]


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭