【pygame系列 第三课 弹球游戏-上 】
python我们可以做文字版的游戏,比如猜数字游戏,21点游戏。那python可以做图形界面的游戏吗?偷偷告诉你,用pygame库就可以实现了。pygame是python中专门用来编写游戏的一个引擎库,通过使用它,就可以很快的实现编写图形化的游戏。
小球动图.gif实现思路:
第一步:创建游戏窗口
第二步:绘制一个弹球
第三步:让球动起来
球动起来的原理实际上就是球的位置发生了改变,位置是由球的x,y坐标决定的,所以只要不断改变球的坐标就可以实现动起来的效果了。
第四步:边界检测
怎样知道球出了边界呢?通过比较球的x,y坐标值与边界的坐标值,从而判断是否出了边界。
1.创建游戏窗口
这个已经非常熟练了,直接看代码。
代码:
import pygame
import sys
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
pygame.display.flip() # 更新
效果:
2.绘制一个弹球
绘制一个小球,其实就是绘制一个圆。
代码:
import pygame
import sys
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
# 球的颜色 红色
ball_color = (255,0,0)
# 球的大小 半径
ball_size = 20
# 球的初始位置 设置在窗口中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在窗口上绘制一个圆形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
效果:
3.让球动起来
小球是绘制出来了,那该怎样让它动起来了呢?物体动其实它的位置发生了改变,在计算机中就是它的坐标,我们只要让球的坐标变化,利用人眼暂留的效应,使得小球看上去在运动一样。
代码:
import pygame
import sys
import random
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
# 球的颜色 红色
ball_color = (255,0,0)
# 球的大小 半径
ball_size = 20
# 球的初始位置 设置在窗口中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
# 设置球的 初始速度
speed_x=random.randint(1,5)
speed_y=random.randint(1,5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在窗口上绘制一个圆形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
# 等待 100ms 避免刷新太快
pygame.time.wait(100)
# 更改位置
pos_x += speed_x
pos_y += speed_y
效果:
4.边界检测
虽然小球可以移动了,但是发现没过一会,小球就跑出窗口了,这个时候,我们需要检测小球是否到达边界,到了就改变运动方向。
代码:
import pygame
import sys
import random
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("弹球游戏")
# 背景白色
bg = (255,255,255)
# 球的颜色 红色
ball_color = (255,0,0)
# 球的大小 半径
ball_size = 20
# 球的初始位置 设置在窗口中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
# 设置球的 初始速度
speed_x=random.randint(1,5)
speed_y=random.randint(1,5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在窗口上绘制一个圆形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
# 等待 100ms 避免刷新太快
pygame.time.wait(100)
# 如果小球碰到左右边界,改变速度反弹
if pos_x <ball_size or pos_x > width-ball_size:
speed_x = -speed_x
# 如果小球碰到上下边界,改变速度反弹
if pos_y <ball_size or pos_y > height-ball_size:
speed_y = -speed_y
# 更改位置
pos_x += speed_x
pos_y += speed_y
效果:
总结:
本文主要讲了如何绘制一个圆形球,如何让球移动起来,以及限制小球移除边界。
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size) 在窗口上的中心位置绘制一个什么颜色,多大的圆形。
speed_x = -speed_x,speed_y = -speed_y - 号表示取反的意思
pos_x <ball_size or pos_x > width-ball_size 判断是否出了 上边界 或者 下边界
pos_x += speed_x ,pos_y += speed_y 累加 等效于 pos_x = pos_x+ speed_x
欢迎转载,转载请注明出处!
欢迎关注公众微信号:叶子陪你玩
分享自己的python学习之路