编程初入门

【pygame系列 第三课 弹球游戏-上 】

2019-12-10  本文已影响0人  叶子陪你玩

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学习之路

上一篇下一篇

猜你喜欢

热点阅读