Python製作太空射擊小遊戲!
寫在最前面
你想成為Python高手嗎?你想使用Python編寫一個炫酷的遊戲嗎?
那麼今天這篇文章就能帶著你從零開始編寫一個Python小遊戲。希望你能喜歡。
話不多說,我們先來看一副動圖
這個圖片中就是我們最終的效果。是不是很炫酷?有木有?而且程式碼全部都是由Python編寫的,是不是很神奇?不清楚你們是什麼感覺,我一次看到這個專案是就覺得很厲害。
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">需要專案原始碼與素材的小夥伴關注並轉發文章,私信小編“太空射擊”即可獲取專案的原始碼
</pre>
專案部分
這種小專案看起來是很炫酷,其實做起來也不難,但是稍微有點麻煩。麻煩就在於找素材
上訴就是需要使用到的素材。除了上面需要用到的圖片,還有音樂等檔案。我就不一一發出來了。素材是次要的,最主要的還是程式碼。
程式碼我們只需要用到pygame這個模組,沒有安裝的小夥伴可以自己安裝一下。
安裝之後我們就來看一下程式碼。首先我們需要匯入一個用到的庫。有了這些庫之後我們才能進行使用
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">from future import division
import pygame
import random
from os import path
</pre>
然後要匯入當前檔案下的素材,沒有這些素材頁面就會是醜醜的
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"># 匯入圖片素材
img_dir = path.join(path.dirname(file), 'assets')
匯入音訊檔案
sound_folder = path.join(path.dirname(file), 'sounds')
</pre>
然後在定義一些預設的引數、顏色
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">## 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)
</pre>
初始化遊戲
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">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')
</pre>
定義玩遊戲的事件與邏輯
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">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()
</pre>
中間的程式碼有點多,我就不一一展現出來了,想要的話原始碼可以,進群:700341555。如果你將這個遊戲學完了的話,你的能力將會提升一大截。如果你只是一個小白的話,要到原始碼也可以直接執行。
寫在最後
這個專案雖然不大,算上空格與註釋,程式碼量是600多行。雖然程式碼不多,但是如果你全部掌握的話,能力提升還是槓槓的。
真心希望大家能夠在Python的方向上走的更遠!!
畢竟現在Python的火熱程度及實用性,很快能夠在程式語言佔據很大的地位!只要堅持學下去,終有一天是能夠全部掌握的。
相關文章
- 小遊戲的製作遊戲
- python手機版做小遊戲程式碼大全-python簡單小遊戲程式碼 怎麼用Python製作簡單小遊戲...Python遊戲
- 遊戲雜談:大製作遊戲和小製作遊戲,在開發思路方式上的差別遊戲
- 如何用Python製作自己的遊戲Python遊戲
- 微信吸粉小遊戲怎麼製作?中秋節微信公眾號吸粉小遊戲製作教程遊戲
- 製作3D小汽車遊戲(上)3D遊戲
- 製作3D小汽車遊戲(下)3D遊戲
- 製作遊戲人物頭部的21個小技巧遊戲
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- 製作遊戲的遊戲:創作樂趣的樂趣遊戲
- 使用Unity製作遊戲AIUnity遊戲AI
- Python小遊戲2048Python遊戲
- Vue+WebSocket+ES6+Canvas 製作【你畫我猜】小遊戲VueWebCanvas遊戲
- 如何低成本製作遊戲音效遊戲
- 動作遊戲,需要如何提高打擊感?遊戲
- pyqt5製作俄羅斯方塊小遊戲-----原始碼解析QT遊戲原始碼
- 遊戲角色寫實頭髮製作遊戲
- 製作遊戲載入進度條遊戲
- 使用DOTS製作一款第三人稱殭屍射擊遊戲遊戲
- 巨人網路製作人聊遊戲長留: 提高遊戲長留是遊戲製作終極追求遊戲
- python小遊戲-移動木板Python遊戲
- 關於Python小遊戲程式Python遊戲
- 國產單機遊戲的未來,只能是創意小製作嗎?遊戲
- 底層搭建:踏入動作遊戲的製作階段遊戲
- 遊戲特效有哪些製作的分類遊戲特效
- Microsoft + Perforce:遊戲製作的全新構想ROS遊戲
- python爆破一筆畫小遊戲Python遊戲
- 《最終幻想7:重製版》遊戲音訊製作分享遊戲音訊
- 遊戲音樂的認識與製作三遊戲
- 【python遊戲製作】殭屍來襲 ~ 快來一起創造植物叭~Python遊戲
- three.js 郭先生製作太陽系JS
- 《太吾繪卷》製作人:我是怎麼看待“獨立遊戲”與“商業遊戲”的遊戲
- 【Python】 Python小遊戲-貪吃蛇大冒險Python遊戲
- 如何用python編寫猜拳小遊戲?Python遊戲
- Python魂鬥羅小遊戲原始碼Python遊戲原始碼
- Python程式碼實現“FlappyBird”小遊戲PythonAPP遊戲
- 動作與射擊漫談:格鬥遊戲中的動作設計遊戲
- svg製作小圖示SVG