Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions alien.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import sys
import pygame
from settings import Settings
from ship import Ship
import game_functions as gf

def run_game():
#初始化,创建屏幕对象
pygame.init()
ai_settings=Settings()
screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption("Alien")
ship=Ship(ai_settings,screen)

#开始游戏循环
while True:
#监视键盘、鼠标事件
gf.check_events(ship)
ship.update()
gf.update_screen(ai_settings,screen,ship)


run_game()
34 changes: 34 additions & 0 deletions game_functions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import sys
import pygame

def check_keydown_events(event,ship):
"""响应按键"""
if event.key == pygame.K_RIGHT:
ship.moving_right = True
elif event.key == pygame.K_LEFT:
ship.moving_left = True
def check_keyup_events(event,ship):
"""响应松开"""
if event.key == pygame.K_RIGHT:
ship.moving_right = False
elif event.key == pygame.K_LEFT:
ship.moving_left = False

def check_events(ship):
"""响应按键、鼠标事件"""
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.KEYDOWN:
check_keydown_events(event,ship)

elif event.type==pygame.KEYUP:
check_keyup_events(event,ship)

def update_screen(ai_settings,screen,ship):
"""update images,change into new screen"""

screen.fill(ai_settings.bg_color)
ship.blitme()

pygame.display.flip()
18 changes: 18 additions & 0 deletions settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
class Settings():
"""store all the settings"""

def __init__(self):

#screen
self.screen_width=1200
self.screen_height=800
self.bg_color=(230,230,230)

#set ship
self.ship_speed_factor=1.5

#bullet
self.bullet_speed_factor=1
self.bullet_width=3
self.bullet_height=15
self.bullet_color=60,60,60
37 changes: 37 additions & 0 deletions ship.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import pygame
class Ship():
def __init__(self,ai_settings,screen):
"""initialize ship and position"""
self.screen=screen
self.ai_settings=ai_settings

#load image and get 外接矩形
self.image=pygame.image.load(r'E:/Game/images/ship.bmp')
self.rect=self.image.get_rect()
self.screen_rect=screen.get_rect()

#put ship in the center
self.rect.centerx=self.screen_rect.centerx
self.rect.bottom=self.screen_rect.bottom

#存储速度
self.center=float(self.rect.centerx)

#move sign
self.moving_right=False
self.moving_left = False

def update(self):
"""根据标志调整飞船位置"""
#更新center,而不是rect
if self.moving_right and self.rect.right<self.screen_rect.right:
self.center += self.ai_settings.ship_speed_factor
if self.moving_left and self.rect.left>0:
self.center -= self.ai_settings.ship_speed_factor
#更新rect对象
self.rect.centerx=self.center


def blitme(self):
"""draw ship"""
self.screen.blit(self.image,self.rect)