python弹球游戏实验报告_Python游戏练习之弹球示例

这篇文章主要介绍了python实现的弹球小游戏,由键盘控制底部挡板移动,碰撞小球的游戏功能。

需求描述:

ball 弹球 颜色:红 ,大小:10,10,25,25, 初始位置:245,100

paddle:挡板 颜色:蓝 大小:宽:100 高:10 初始位置:200,300

规则:当弹球碰到挡板上方,弹球反弹;当弹球越过挡板到游戏画板底部的时候,游戏结束

基础知识:

基于python面向对象理解

tkinter知识掌握

Canvas如何绘制

代码示例

弹球ball class:

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)

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

#绘制

def draw(self):

self.canvas.move(self.id, self.x, self.y)

pos = self.canvas.coords(self.id) #top-left bottom-right

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]):

return True

return False

挡板paddle class:

class Paddle:

# 初始化

def __init__(self, canvas, color):

self.canvas = canvas

# 画一个矩形

self.id = canvas.create_rectangle(0, 0, 100, 10, fill = color)

self.x = 0

self.canvas.move(self.id, 200, 300)

self.canvas_width = self.canvas.winfo_width()

self.canvas.bind_all("", self.turn_left) # 左按键移动turn_left距离

self.canvas.bind_all("", 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)

#self.x = 0

def turn_left(self, event):

self.x = -4

def turn_right(self, event):

self.x = 4

实现及控制逻辑:

import tkinter

import random

import time

...

tk = tkinter.Tk()

tk.title("Game Ball")

tk.resizable(0,0)

tk.wm_attributes("-topmost", 1)

canvas = tkinter.Canvas(tk,width= 500,height= 500, bd = 0, highlightthickness = 0)

canvas.pack()

tk.update()

paddle = Paddle(canvas,"blue")

ball = Ball(canvas,paddle,"red")

while 1:

if(ball.hit_bottom == False):

ball.draw()

paddle.draw()

tk.update_idletasks()

tk.update()

time.sleep(0.01)

总结:本章需要掌握的知识点有python面向对象、tkinter知识、Canvas如何绘制和CanvasAPI函数。

每天多努力那么一点点,积少成多

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值