初学pygame必做的小游戏:python弹球游戏

目录

  1. pygame最小框架
  2. 做个弹球
  3. 弹球动起来
  4. 加入挡板
  5. 挡板的左右运动
  6. 完整源代码下载

  7. 初学pygame必做的小游戏:python弹球游戏

一 pygame最小框架

做pygame游戏必写的代码,有了这些才能初步的运行起来。

import pygame

#pygame初始化
pygame.init()
# 设置窗口大小
screen_width = 400
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

running = True
while running:
    #遍历所有事件,包括鼠标、键盘的操作等
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    #背景设为白色
    screen.fill(255,255,255)
    #刷新
    pygame.display.flip()

二 做个小弹球

本部分用pygame做个弹球,效果图如下:

初学pygame必做的小游戏:python弹球游戏

1 导入随机库

先在开头导入随机库

import random

2 设置弹球的几个变量

while循环的前面加入代码

# 定义白色
white = 255,255,255 
# 定义红色
red = 255,0,0

# 定义弹球的半径
ball_radius = 10
# 定义球出现的坐标位置
# x为0+球的半径 到 窗口大小-半径,高度为0
ball_pos = [random.randint(ball_radius, screen_width - ball_radius), 0]
# 球的速度
ball_speed = 0.1

3 弹球的运动

在循环内部、窗口刷新的前面加入

  # 球的坐标列表
   ball_pos[1] += ball_speed
  # 在屏幕上画弹球
  # 参数分别为:窗体名称、颜色、球的坐标、球的半径
   pygame.draw.circle(screen, red, ball_pos, ball_radius)

三 球弹起来

让弹球遇到窗口的边缘弹起来,本部分的效果

初学pygame必做的小游戏:python弹球游戏

1 更改球的速度变量

上部分定义的速度变量主要是控制球的向下落,也就是y坐标
让球弹起来的过程,我们也要x的坐标加入,也就是向下落的过程中随机向左或向右移动

ball_speed = [random.uniform(-0.1,0.1), 0.1]

2 刷新过程的变更的变更

将上面 第二部分做弹球的第3步“3 弹球的运动”代码全部改为下面这样

    #更改球的坐标
    #列表的0位表示x坐标,向左或向右移动
    #列表的1位表示y坐标,向下落
    ball_pos[0] += ball_speed[0]
    ball_pos[1] += ball_speed[1]    

    #如果球的y坐标超过窗口高度,
    #或者球的y坐标超过窗口的最顶部
    #将y的增量速度加个负号,改为相反值
    if ball_radius+ball_pos[1]>screen_height or ball_pos[1]-ball_radius<0:
        ball_speed[1] = -ball_speed[1]
    #同理改x坐标
    if ball_radius+ball_pos[0]>screen_width or ball_pos[0]-ball_radius<0:
        ball_speed[0] = -ball_speed[0]

    pygame.draw.circle(screen, red, ball_pos, ball_radius)

四 加入档板

加入一个挡板来接小球

1 挡板的变量定义

这里和弹球的变量定义基本一样

paddle_width = 80 #板宽度
paddle_height = 10 #板厚度
# 板的坐标,x位于屏幕中间,y为窗口底-板厚度-20
paddle_pos = [(screen_width - paddle_width)/2
            screen_height - paddle_height-20]
# 板的移动速度
paddle_speed = 1

2 挡板的刷新

以下为画矩形有代码,放入循环中

#下面这是一行
#画矩形有参数:窗口、颜色、矩形位置坐标和尺寸
pygame.draw.rect(screen, red, 
   (paddle_pos[0], paddle_pos[1], paddle_width, paddle_height))

五 挡板移动

1 变量定义

定义两个变量判断是否按下向左或向右键

paddle_bool_right = False
paddle_bool_left = False

2 方向键按下的判断

在while循环的if后加入elif

#如果当前的事件类型为按下键盘
elif event.type == pygame.KEYDOWN:
    #如果按下右键,更改两个变量的值
    if event.key==pygame.K_RIGHT:
        paddle_bool_left= False
        paddle_bool_right = True
    elif event.key==pygame.K_LEFT:
        paddle_bool_left = True
        paddle_bool_right = False

3 按下方向键的优化

如果只有上面的代码,会出现bug:按下后一直向某个方向移动

elif event.type == pygame.KEYUP:
    if event.key==pygame.K_RIGHT:
        paddle_bool_right = False
    if event.key==pygame.K_LEFT:
        paddle_bool_left= False  

六 pygame弹球游戏代码全部下载

pygame弹球游戏,我把整个流程都做了,包括文字显示、游戏结束的判断、按回车重新开始游戏等,过程全写在这里就太多了,就不赘述了,可以把全部代码下载细看 

因为是为pygame初学者而写,所以程序是白色背景的,没有加入图片,你可以试着加入图片背景等,让程序看着更好看

下载方法:

关注本号之后,后台发送消息:弹球游戏

本文结束

如有疑问,请直接留言!必回!
如有帮助,请点赞转发!感谢!

关注Python入门速学
带你实战快速学Python

原文始发于微信公众号(Python入门速学):初学pygame必做的小游戏:python弹球游戏

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/236368.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!