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遊戲
- 微信吸粉小遊戲怎麼製作?中秋節微信公眾號吸粉小遊戲製作教程遊戲
- html畫布製作貪吃蛇小遊戲HTML遊戲
- three.js 郭先生製作太陽系JS
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- Vue+WebSocket+ES6+Canvas 製作【你畫我猜】小遊戲VueWebCanvas遊戲
- pyqt5製作俄羅斯方塊小遊戲-----原始碼解析QT遊戲原始碼
- 3個Web入門小遊戲,製作只需基礎三劍客Web遊戲
- python製作命令列工具——firePython命令列
- canvas繪製太陽系Canvas
- 如何用Python製作自己的遊戲Python遊戲
- Python製作egg檔案包Python
- 突擊面試,我還是太菜了。面試
- Python開發技巧-教你製作Python進度條Python
- python製作exe可執行表白神器Python
- 製作 Python Docker 映象的最佳實踐PythonDocker
- python自動製作gif並新增文字Python
- 用 Python 製作截圖小工具Python
- Python 模組的製作,釋出,安裝Python
- [Python實戰]Python製作天氣查詢軟體Python
- python爬蟲利用requests製作代理池sPython爬蟲
- 鬥圖?教你用Python製作表情包Python
- 如何製作python安裝模組(setup.py)Python
- python程式碼製作configure檔案Python
- Python小遊戲2048Python遊戲
- Blender 效果製作:製作起伏不平的路面
- 學以致用:Python爬取廖大Python教程製作pdfPython
- Html 製作HTML
- 福利!Python製作動態字元畫(附原始碼)Python字元原始碼
- 製作一個ai叢雨(附Python程式碼)AIPython
- 客製化NVRAM的乙太網地址VR
- canvas繪製太陽系運動效果Canvas
- 關於Python小遊戲程式Python遊戲
- python小遊戲-移動木板Python遊戲
- 備戰衝擊藍橋杯國賽——Python程式設計 | Day01 | 門牌製作 | 真題程式碼解析Python程式設計
- 價目表製作報價單製作軟體
- canvas繪製“飛機大戰”小遊戲,真香!Canvas遊戲