今天是乙個週末,宿舍的人全部都出去玩了,而我因為太懶乙個人留在了宿舍,連床都不起,吃飯靠的是點外賣。
不過,為了好玩,我跟著書本學習打了乙個2d小遊戲,並加入了一點自己的東西。
一、遊戲頁面
剛開始我把所有的遊戲螢幕設定都放在了下面**裡,這使得**看起來非常長,和雜亂, 所以為了使遊戲方便擴充套件和整個**邏輯更容易理解,我將整個遊戲分為了幾個檔案。下面就是主程式檔案
importsysimport
pygame
from settings import
settings
from ship import
ship
import
game_functions as gf
defrun_game():
#初始化遊戲並建立乙個螢幕物件
pygame.init()#
初始化背景設定,讓pygame能夠正長工作
#screen=pygame.display.set_mode((1200,800))#實參(1200,800)是乙個元組,制定了遊戲視窗的尺寸
ai_settings=settings()
screen =pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption(
"外星人入侵")
#建立一艘新飛船
ship=ship(screen)
#設定背景色
#bg_color=(230,250,250)
#開始遊戲的主迴圈
while
true:
#監視鍵盤和滑鼠事件
#for event in pygame.event.get():
#if event.type==pygame.quit:#如果使用者點叉號,則退出
#sys.exit()
gf.check_events(ship)
ship.update()
#每次迴圈時重繪螢幕
#screen.fill(bg_color)
#screen.fill(ai_settings.bg_color)
#ship.blitme()##
#讓最近繪製的螢幕可見
#pygame.display.flip()
gf.update_screen(ai_settings,screen,ship)
run_game()
二、螢幕設定類settings.py
classsettings(object):
'''儲存這個遊戲的所有設定類
'''def
__init__
(self):
'''初始化遊戲設定
'''#
螢幕設定
self.screen_width=450self.screen_height=640
#self.bg_color=(230,250,250)
#self.ship_speed_factor=1.5
本身我跟隨書本裡做的時候,它提供的是背景顏色,但是我覺得背景顏色太難看了,所以就自己進行了修改,修改在下一部分裡
三、建立ship類
在這個類裡,我們將飛船顯示在螢幕上,並進行螢幕的更新,在這基礎上,我在這個類裡給遊戲加上了背景,記住一定要先繪製背景,在繪製飛船,不然會顯示不出飛船
importpygame
class
ship(object):
def__init__
(self,screen):
'''初始化飛船,並設定其初始位置
'''self.screen=screen
#載入飛船影象,並獲取其外接矩形
獲取飛船外接矩形
self.screen_rect=screen.get_rect()#
獲取表示螢幕的矩形
self.screen_image_rect=self.screen_image.get_rect()
#將每艘新飛船放在螢幕底部**
self.screen_image_rect.centerx=self.screen_rect.centerx
self.screen_image_rect.bottom =self.screen_rect.bottom
self.rect.centerx=self.screen_rect.centerx
self.rect.bottom=self.screen_rect.bottom
#移動標示
self.moving_right=false
self.moving_left=false
self.moving_up =false
self.moving_down =false
defupdate(self):
'''根據移動標示移動飛船
'''if
self.moving_right:
self.rect.centerx+=1
ifself.moving_left:
self.rect.centerx-=1
ifself.moving_up :
self.rect.bottom-=1
ifself.moving_down :
self.rect.bottom+=1
defblitme(self):
'''在指定位置繪製飛船
'''self.screen.blit(self.screen_image, self.screen_image_rect)
self.screen.blit(self.image, self.rect)
#blitme(),根據self.rect將繪製到螢幕上。
四、遊戲操作
既然是電腦遊戲,則肯定是要通過鍵盤來控制飛船的移動,我們需要響應按鍵。每當使用者按鍵時,都將在pygame中註冊乙個事件。
importsysimport
pygame
defcheck_events(ship):
for event in
pygame.event.get():
if event.type == pygame.quit: #
如果使用者點叉號,則退出
sys.exit()
elif event.type==pygame.keydown:
if event.key==pygame.k_right:
ship.moving_right=true
elif event.key ==pygame.k_left:
ship.moving_left =true
elif event.key==pygame.k_up:
ship.moving_up =true
elif event.key==pygame.k_down:
ship.moving_down =true
elif event.type==pygame.keyup:
if event.key==pygame.k_right:
ship.moving_right=false
elif event.key ==pygame.k_left:
ship.moving_left =false
elif event.key ==pygame.k_up:
ship.moving_up =false
elif event.key ==pygame.k_down:
ship.moving_down =false
defupdate_screen(ai_settings,screen,ship):
#screen.fill(ai_settings.bg_color)
ship.blitme()
#讓最近繪製的螢幕可見
pygame.display.flip()
這就是我這一天所學習的,至於限制飛船不出螢幕,填裝彈藥以及外星人的建立,要等到下次了。
Pygame 外星人入侵(7)外星人壓境
二 更加合理地移動 三 小結 在之前的博文中,實現了在螢幕上繪製一大群外星人,現在我們想讓這群外星人動起來,它們的移動遵循著一定的規律。我們首先要實現的是,如何讓一群外星人一起向螢幕右側移動。遊戲引數性質的變數統一存放在 設定模組中的設定類中 6 外星人的屬性 6。1 外星人移動的速度 self.a...
外星人入侵 Standard IO
description 外星人入侵地球。可怕的吃人外星人正在全國各地依次序建立它們的基地。全國共有n 1 n 10,000 座城市,城市編號1 n。城市之間有m 0 m 100,000 條雙向道路相連。外星人計畫建立a 0 a n 個基地。你只有在距離當前所有外星人基地至少k 1 k 100 單位長...
外星人入侵 二
思路 當按下特定的方向鍵後,飛船向指定的方向移動,可以允許不斷移動,為實現不斷移動,需要設定乙個移動標誌,預設為false,當按下時,則為true,實現其方向鍵的移動,除此之外,還要限制飛船的活動範圍,防止飛出邊界,為此需要更改 ship.py完整 如下 import pygame class sh...