平时给小家伙上过不少网上的体验课,特别是数学、外语和编程的,教学过程中通过一些简单的小游戏来加强学习效果。感觉效果挺不错的。不过要是真的订阅这些应用,每个也要好几千。那些简单有趣的小游戏在如此高价的衬托下就显得不是那么香了。那些学习小游戏的逻辑其实都挺简单的,如果会编程制作游戏,应该都不难实现。于是萌发了学习自己编写游戏给小宝贝边玩边学的想法。现在最流行的编程语言python 有一个叫pygame的库,非常好用。在网上找了一个教学视频,跟着做一个大战外星人的小游戏,熟悉pygame使用方法,掌握后再自己编写游戏。这里记录一下过程,这是第一篇,完成后获得一个让玩家可以用左右键控制的飞机。
一、安装pygame
首先电脑上要安装python3.然后输入命令:
pip install pygame
等待安装完成就可以了。
二、下载素材
这个飞碟当图标,也可以用来当入侵地球的外星人飞船,也就是游戏中的敌人。
这个就是玩家控制的飞机,用它来保卫地球,消灭外星人。
三、大致思路
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()