学习用pygame做游戏“大战外星人”(一)

Words
676
Reading
4 min
5y
Listen to this post
~5 min

image.png

平时给小家伙上过不少网上的体验课,特别是数学、外语和编程的,教学过程中通过一些简单的小游戏来加强学习效果。感觉效果挺不错的。不过要是真的订阅这些应用,每个也要好几千。那些简单有趣的小游戏在如此高价的衬托下就显得不是那么香了。那些学习小游戏的逻辑其实都挺简单的,如果会编程制作游戏,应该都不难实现。于是萌发了学习自己编写游戏给小宝贝边玩边学的想法。现在最流行的编程语言python 有一个叫pygame的库,非常好用。在网上找了一个教学视频,跟着做一个大战外星人的小游戏,熟悉pygame使用方法,掌握后再自己编写游戏。这里记录一下过程,这是第一篇,完成后获得一个让玩家可以用左右键控制的飞机。

一、安装pygame

首先电脑上要安装python3.然后输入命令:
pip install pygame
等待安装完成就可以了。

二、下载素材

ufo.png


这个飞碟当图标,也可以用来当入侵地球的外星人飞船,也就是游戏中的敌人。

f18.png


这个就是玩家控制的飞机,用它来保卫地球,消灭外星人。

三、大致思路

pygame的运行步骤就是先初始化(pygame.init()),然后创造一个屏幕窗口,在上面显示内容。要想让这个窗口保持显示,就需要用一个while循环,在循环体内,pygame会不停的检测各种事件,比如鼠标点击,按键按下等等,根据发生的事件执行相关的代码。

控制飞机的思路:用一个函数接收飞机的坐标位置,然后把飞机在那个地方显示出来。再设置一个变量playerx_change来存储移动坐标改变量。设置检测按键按下的代码,如果按下右键playerx_change就加0.3,反之就减0.3。如果按键松开playerx_change归零,飞机停止移动。每次while循环最后,更新飞机的显示位置。

四、源代码

将下面的源代码保存为.py文件,和上面的图片文件放在同一个文件下面,确定python3 和pygame库。运行py文件就可以看到标题图中的运行效果了。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygame
# init
pygame.init()
# create screen 
screen=pygame.display.set_mode((800,600))

#title and icon
pygame.display.set_caption('大战外星人')
icon=pygame.image.load('ufo.png')
pygame.display.set_icon(icon)

#player 
playerImg=pygame.image.load('f18.png')
playerx=370
playery=460
playerx_change=0

def player(x,y):
    screen.blit(playerImg,(x,y))


running=True
while running:
    screen.fill((0,0,128))
#检查左右键是否被按下
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running=False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                playerx_change -= 0.2
            if event.key == pygame.K_RIGHT:
                playerx_change += 0.2
        if event.type == pygame.KEYUP:
            playerx_change=0
            
    playerx += playerx_change        
    if playerx <= 0.8:
        playerx=0.8
    if playerx >= 704:
        playerx=704

    player(playerx,playery)
    pygame.display.update()
学习用pygame做游戏“大战外星人”(一) | Ecency