zoukankan      html  css  js  c++  java
  • python pygame模块 打飞机游戏

    settings.py用于设置屏幕的基本设置

    # -*- coding: gbk -*- 
    __author__ = 'HZQ'
    import  pygame
    class  Settings():
        '''
        存储所有设置
        '''
        def  __init__(self):
            #屏幕大小设置
            self.screen_width = 600
            self.screen_height = 400
            #屏幕背景
            self.pwd='E:\\Python35\\images\\bg.jpg'
            #飞船速度设置
            self.ship_speed_factor = 1.5
        def bg(self):
            background = pygame.image.load(self.pwd).convert()
            return background

    Update_Screen.py设置屏幕背景

    # -*- coding: gbk -*- 
    __author__ = 'HZQ'
    import  pygame
    class Update_Screen():
        def __init__(self):
            self.pwd='E:\\Python35\\images\\bg.jpg'
        def up_sc(self):
            background = pygame.image.load(self.pwd).convert()

    ship.py设置飞机机器位置属性

    # -*- coding: gbk -*- 
    __author__ = 'HZQ'
    import  pygame
    class Ship():
        def __init__(self,ai_settings,screen):
            """初始化飞机并设置位子"""
    
            self.screen = screen
            self.ai_settings = ai_settings
            # 加载飞船图像并获取其外接矩形
            self.image = pygame.image.load('E:\\Python35\\images\\hero.gif')
            self.rect = self.image.get_rect()
            self.screen_rect = screen.get_rect()
            # 将每艘新飞船放在屏幕底部中央
            self.rect.centerx = self.screen_rect.centerx
            self.rect.bottom = self.screen_rect.bottom
            #在飞船的属性center中存储小数值
            self.center = float(self.rect.centerx)
            self.bottom =float(self.rect.bottom)
            #移动标志
            self.moving_right =False
            self.moving_left =False
            self.moving_up =False
            self.moving_down =False
        def update(self):
            """根据移动标志调整飞船,不得超出屏幕"""
            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
            if self.moving_up and self.rect.top > 0:
                self.bottom -= self.ai_settings.ship_speed_factor
            if self.moving_down and self.rect.bottom < 600:
                self.bottom += self.ai_settings.ship_speed_factor
            #根据self.center/bottom跟新rect
            self.rect.centerx=self.center
            self.rect.bottom=self.bottom
        def blitme(self):
            """在指定位置绘制飞船"""
            self.screen.blit(self.image,self.rect)

    game_funtions.py  游戏主功能设置

    # -*- coding: gbk -*- 
    __author__ = 'HZQ'
    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
        elif event.key == pygame.K_UP:
            ship.moving_up=True
        elif event.key == pygame.K_DOWN:
            ship.moving_down=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
        elif event.key == pygame.K_UP:
             ship.moving_up=False
        elif event.key == pygame.K_DOWN:
             ship.moving_down=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):
        """更新屏幕上的图像,并切换到新屏幕"""
        # 每次循环时都重绘屏幕
        #screen.fill(ai_settings.bg_color)
        ship.blitme()
        #让最近绘制屏幕可见
        pygame.display.flip()
        pygame.display.update()

    alien_invasion.py  游戏执行

    # -*- coding: gbk -*-
    __author__ = 'HZQ'
    
    import sys
    import pygame
    from  settings import  Settings
    from  ship import  Ship
    import  game_functions as  gf
    from  update_screen import  Update_Screen
    
    def run_game():
    # 初始化游戏并创建一个屏幕对象
        pygame.init()
        #创建实例
        ai_settings =Settings()
        screen = pygame.display.set_mode((ai_settings.screen_height, ai_settings.screen_width))
        pygame.display.set_caption("星际争霸")
        #设置背景颜色
        #bg_color =(230,230,230)
        #创建飞船
        ship=Ship(ai_settings,screen)
        #设置背景图片
        #background = pygame.image.load(ai_settings.pwd).convert()
        # 开始游戏的主循环
        while True:
            #监视键盘鼠标事件
            gf.check_events(ship)
            ship.update()
            #每次循环都重绘屏幕
            #将背景画上去
            screen.blit(ai_settings.bg(),(0,0))
            #让最近的屏幕可见
            gf.update_screen(ai_settings,screen,ship)
    run_game()

    当前实现屏幕绘制,飞机键盘按键控制上下左右,马克,待续

  • 相关阅读:
    数据结构笔记(一)
    Distance dependent Chinese Restaurant Processes
    距离依赖中餐馆过程
    AOP技术-02
    AOP技术-01
    Oracle-06
    web-02-css01
    web-02-css
    web-01
    jQuery对ajax的支持
  • 原文地址:https://www.cnblogs.com/HZQHZA/p/7455274.html
Copyright © 2011-2022 走看看