用游戏学编程

学习编程是很快乐的事情。当我们自己开发出一套时下流行的游戏时,这满满的成就感比玩儿游戏本身高出了不知道会有多少倍。

接下来一段时间我们就python从0开始学习怎么开发 flappy brid 游戏。在学习之前,我们不需要有任何编程基础,只要会打开电脑上网即可。通过本系列课程的学习,同学们可以掌握python编程基础。能够自己动手开发一些自己喜欢的游戏。

在开始编程之前,让我们再看一下这个游戏怎么运行的吧。

看过flappy brid怎么玩儿之后,我们一起动手实现它。同学们按照下面的步骤完成本节课的学习。

安装python及IDE可以参考这个课程:

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738150500472fd5785c194ebea336061163a8a974000

1. 怎么制作一个游戏


我们玩儿的游戏。从外观上看,包括:游戏背景、游戏角色、游戏声音、游戏动作几个模块。总结起来就是,我们的游戏角色在游戏背景上执行指定的动作,发出指定的声音。

用python编写游戏也是一样。我们首先设计好游戏大纲,把游戏大纲用python语言实现。然后填充好视觉图片和声音特效,我们的游戏就开发完成了。

2.pygame介绍

使用python开发游戏时,我们经常引入pygame库。什么是“库”呢?python库就是别人写好的一些完成特定功能的代码。就像我们手机安装的有各种各样的App,python也有各种各样的库。pygame就是python开发游戏常用的库。

我们为什么要使用python库呢?一些想计算器等简单的程序,我们只需要自己写代码就可以完成整个程序的开发。但是像我们玩儿的手机游戏、用的微信、QQ等程序都有比较复杂的功能,如果整个程序都有我们来开发。那会是几十万行代码的工作量,由于代码行数多,还容易引起bug。建筑工人盖楼时,我们不会在工地上自己做钢板瓷砖,而是用其他团队给我们生产好的瓷砖直接使用。我们写程序时也会经常使用其他团队开发的‘库’来简化我们的程序,通过引入库,我们可以和世界上任何一个程序员一起合作,协同开发。

pygame作为python的游戏库,具有 简单易用、功能完整、只需要少量代码即可完成游戏渲染等特点。是我们用python开发游戏的利器。

3.pygame安装

要想给python安装库,我们经常使用pip工具作为辅助。pip的安装方法如下。

1:用浏览器打开

https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz 压缩包下载后解压到指定文件夹


2: 用命令行进入解压后的文件夹,运行 python setup.py install 命令,完成pip的安装

pip安装完成后,我们就可以使用 python -m pip install -U pygame --user 命令安装 pygame了。

4.pygame-helloworld

pygame库安装好后,我们就可以用python开发游戏了。我们打开pycharm,新建一个python文件,将下面的代码粘贴到文件中,我们的第一个游戏就制作完成了!虽然有些简单,但是也像模像样。

import sys, pygame

pygame.init()

width = 320
height = 240
speed = [2, 2]

screen = pygame.display.set_mode([width, height])

ball = pygame.image.load("../assets/sprites/ball.gif")
ball_rect = ball.get_rect()

while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()

ball_rect = ball_rect.move(speed)
print(ball_rect.left, ball_rect.right, ball_rect.top, ball_rect.bottom)

if ball_rect.left < 0 or ball_rect.right > width:
speed[0] = -speed[0]

if ball_rect.top < 0 or ball_rect.bottom > height:
speed[1] = -speed[1]

screen.fill([0, 0, 0])
screen.blit(ball, ball_rect)
pygame.display.flip()


我们发现代码是由一行行英语句子来组成的,如果我们认识这些单词,阅读这些代码就相当简单了。编程大量的依靠数学和英语,我们一定要在学校里把数学和英语掌握好哦。

5. pygame核心模块介绍

cursors

加载光标

display

访问显示设备

draw

绘制形状、线和点

event

管理事件

image

加载和存储图片

key

读取键盘按键

mouse

鼠标

sndarray

操作声音数据

time

管理时间和帧信息

transform

缩放和移动图像

6. FlappyBird让鸟儿动起来

接下来,我们就来开发FlappyBird游戏。这节课,我们先完成游戏背景、小鸟起飞的部分。

首先我们还是来看一下代码,再新建一个python文件,将下面的代码粘贴到文件中,点击运行。我们发现游戏背景和小鸟就出现了。当我们按下键盘的空格键,小鸟还会向上飞。

import sys
import pygame
from pygame.locals import *

screenWidth = 288
screenHeight = 512

pygame.init()
pygame.display.set_caption('Flappy Bird')

fpsClock = pygame.time.Clock()
screen = pygame.display.set_mode((screenWidth, screenHeight))

background = pygame.image.load('../assets/sprites/background-day.png').convert()
player = pygame.image.load('../assets/sprites/redbird-upflap.png').convert_alpha()

playerX = int(screenWidth * 0.2)
playerY = int((screenHeight - player.get_height()) / 2)

while True:
screen.blit(background, (0, 0))
screen.blit(player, (playerX, playerY))

for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN and event.key == K_SPACE:
playerY = playerY - 20

   pygame.display.update()
fpsClock.tick(60)


好了,这节课就讲完了。本节我们首先复习了什么是python。什么是python的库。介绍了pygame,用pygame写了我们的第一个游戏。接下来,我们一起完成Flappy Brid游戏吧。




©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容