零基础用Python开发的第一个小游戏——太空射击

写在最前面

你想成为Python高手吗?你想使用Python编写一个炫酷的游戏吗?

那么今天这篇文章就能带着你从零开始编写一个Python小游戏。希望你能喜欢。

话不多说,我们先来看一副动图

号:923414804 群里有志同道合的小伙伴,互帮互助, 群里有视频学习教程和PDF!

这个图片中就是我们最终的效果。是不是很炫酷?有木有?而且代码全部都是由Python编写的,是不是很神奇?不清楚你们是什么感觉,我一次看到这个项目是就觉得很厉害。

项目部分

这种小项目看起来是很炫酷,其实做起来也不难,但是稍微有点麻烦。麻烦就在于找素材

上诉就是需要使用到的素材。除了上面需要用到的图片,还有音乐等文件。我就不一一发出来了。素材是次要的,最主要的还是代码。

代码我们只需要用到pygame这个模块,没有安装的小伙伴可以自己安装一下。

安装之后我们就来看一下代码。首先我们需要导入一个用到的库。有了这些库之后我们才能进行使用

from __future__ import division

import pygame

import random

from os import path

然后要导入当前文件下的素材,没有这些素材页面就会是丑丑的

# 导入图片素材

img_dir = path.join(path.dirname(__file__), 'assets')

# 导入音频文件

sound_folder = path.join(path.dirname(__file__), 'sounds')

然后在定义一些默认的参数、颜色

## to be placed in "constant.py" later

WIDTH = 480

HEIGHT = 600

FPS = 60

POWERUP_TIME = 5000

BAR_LENGTH = 100

BAR_HEIGHT = 10

# 默认的颜色

WHITE = (255, 255, 255)

BLACK = (0, 0, 0)

RED = (255, 0, 0)

GREEN = (0, 255, 0)

BLUE = (0, 0, 255)

YELLOW = (255, 255, 0)

初始化游戏

pygame.init()

pygame.mixer.init() ## For sound

screen = pygame.display.set_mode((WIDTH, HEIGHT))

pygame.display.set_caption("Space Shooter")

clock = pygame.time.Clock()

font_name = pygame.font.match_font('arial')

定义玩游戏的事件与逻辑

def main_menu():

global screen

menu_song = pygame.mixer.music.load(path.join(sound_folder, "menu.ogg"))

pygame.mixer.music.play(-1)

title = pygame.image.load(path.join(img_dir, "main.png")).convert()

title = pygame.transform.scale(title, (WIDTH, HEIGHT), screen)

screen.blit(title, (0,0))

pygame.display.update()

while True:

ev = pygame.event.poll()

if ev.type == pygame.KEYDOWN:

if ev.key == pygame.K_RETURN:

break

elif ev.key == pygame.K_q:

pygame.quit()

quit()

elif ev.type == pygame.QUIT:

pygame.quit()

quit()

else:

draw_text(screen, "Press [ENTER] To Begin", 30, WIDTH/2, HEIGHT/2)

draw_text(screen, "or [Q] To Quit", 30, WIDTH/2, (HEIGHT/2)+40)

pygame.display.update()

#pygame.mixer.music.stop()

ready = pygame.mixer.Sound(path.join(sound_folder,'getready.ogg'))

ready.play()

screen.fill(BLACK)

draw_text(screen, "GET READY!", 40, WIDTH/2, HEIGHT/2)

pygame.display.update()

中间的代码有点多,我就不一一展现出来了,想要的话源码可以,可以看文章开头写的获取方式。如果你将这个游戏学完了的话,你的能力将会提升一大截。如果你只是一个小白的话,要到源码也可以直接运行。

写在最后

源码地址:https://github.com/tasdikrahman/spaceShooter

这个项目虽然不大,算上空格与注释,代码量是600多行。虽然代码不多,但是如果你全部掌握的话,能力提升还是杠杠的。

真心希望大家能够在Python的方向上走的更远!!

毕竟现在Python的火热程度及实用性,很快能够在编程语言占据很大的地位!只要坚持学下去,终有一天是能够全部掌握的。

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

推荐阅读更多精彩内容