python第十二章习题答案
程序员文章站
2022-07-04 15:02:35
...
12.1
import pygame
def run_game():
#初始化创立一个屏幕对象
pygame.init()
screen = pygame.display.set_mode((1600,1200))
pygame.display.set_caption('blue sky')
bg_color = (0,0,255)
#背景色设置成蓝色
while True:
screen.fill(bg_color)
pygame.display.flip()
#开始循环,不断刷新背景色,让最近绘制的屏幕可见
run_game()
12.2
先创立类
character.py
import pygame
class Character():
def __init__(self,screen):
self.screen = screen
#初始化人物并设置初始位置
self.image = pygame.image.load('caocao/caocao.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
#加载人物图像获取其外接矩形
self.rect.centerx = self.screen_rect.centerx
self.rect.centery = self.screen_rect.centery
#将人物放到屏幕中间
def blitme(self):
self.screen.blit(self.image,self.rect)
#在指定位置绘制人物
再运行程序
import pygame
from character import Character
def run_game():
#初始话创立一个屏幕对象
pygame.init()
screen = pygame.display.set_mode((1600,1200))
pygame.display.set_caption('cao cao')
bg_color = (255,255,255)
#背景色为白色
character=Character(screen)
#创立角色
while True:
screen.fill(bg_color)
character.blitme()
#角色显示于屏幕中
pygame.display.flip()
run_game()
12.3
创立设置类型
setting.py
class Setting():
#这里放有《火箭》所有的类
def __init__(self):
#屏幕设置
#初始化游戏设置
self.screen_width = 1600
self.screen_height = 1200
self.bg_color = (255,255,255)
self.huojian_speed_factor = 1.5
创立火箭的类型
huojian.py
import pygame
class Huojian():
def __init__(self,ai_settings,screen):
self.screen = screen
self.ai_settings = ai_settings
#初始化火箭图像加载位置
self.image = pygame.image.load('huojian/huojian.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
# 加载火箭图像并且获取其外接矩形
self.rect.centerx = self.screen_rect.centerx
self.rect.centery = self.screen_rect.centery
#将火箭放到屏幕中间
self.centerx = float(self.rect.centerx)
self.centery = float(self.rect.centery)
# 在火箭的属性center中存储小数值
self.moving_right = False
self.moving_left = False
self.moving_top = False
self.moving_bottom = False
def update(self):
if self.moving_right and self.rect.right < self.screen_rect.right:
self.centerx += self.ai_settings.huojian_speed_factor
if self.moving_left and self.rect.left > 0:
self.centerx -= self.ai_settings.huojian_speed_factor
if self.moving_top and self.rect.bottom > self.screen_rect.top and self.rect.bottom < 1200:
self.centery += self.ai_settings.huojian_speed_factor
if self.moving_bottom and self.rect.top > 0:
self.centery -= self.ai_settings.huojian_speed_factor
#根据标志调整火箭位置
self.rect.centerx = self.centerx
self.rect.centery = self.centery
#根据self.center更新rect对象
def blitme(self):
self.screen.blit(self.image,self.rect)
#在指定位置绘制火箭
再写好火箭的左右上下移动功能。
game_function.py
import sys
import pygame
def check_keydown_events(event,huojian):
if event.key == pygame.K_RIGHT:
huojian.moving_right = True
elif event.key == pygame.K_LEFT:
huojian.moving_left = True
elif event.key == pygame.K_DOWN:
huojian.moving_top = True
elif event.key == pygame.K_UP:
huojian.moving_bottom = True
#按键触发移动事件
def check_keyup_events(event,huojian):
if event.key == pygame.K_RIGHT:
huojian.moving_right = False
elif event.key == pygame.K_LEFT:
huojian.moving_left = False
elif event.key == pygame.K_DOWN:
huojian.moving_top = False
elif event.key == pygame.K_UP:
huojian.moving_bottom = False
#按键松开触发事件
def check_events(huojian):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
check_keydown_events(event,huojian)
elif event.type == pygame.KEYUP:
check_keyup_events(event,huojian)
#总领触发事件
def update_screen(ai_settings,screen,huojian):
screen.fill(ai_settings.bg_color)
huojian.blitme()
pygame.display.flip()
#使得最近的绘制体现在屏幕上
最后重构好主程序,并且运行这个主程序。
12.3.py
import pygame
from huojian import Huojian
from setting import Setting
import game_function as gf
def run_game():
#初始化游戏并创立一个屏幕对象
pygame.init()
ai_settings = Setting()
screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption("Huojian fei")
huojian = Huojian(ai_settings,screen)
#创立火箭
while True:
# 监视键盘和鼠标事件,有方向按键就往这个方向移动并且实施
gf.check_events(huojian)
huojian.update()
# 每次循环时都会重绘屏幕
gf.update_screen(ai_settings, screen, huojian)
run_game()
上一篇: js浏览器兼容性问题--整合(上)
下一篇: 阎肃良好心态 豁达性格铸就健康长寿
推荐阅读
-
2020年最全python面试题汇总第04期(内附13题及答案)
-
C Primer Plus(第6版)第十四章复习题答案
-
[课后作业] 第001讲:我和Python的第一次亲密接触 | 课后测试题的答案
-
《Java语言程序设计》(基础篇原书第10版)第十一章复习题答案
-
《零基础入门学习Python》【第一版】视频课后答案第002讲
-
《零基础入门学习Python》【第一版】视频课后答案第001讲
-
Python从入门到实践习题答案(函数)
-
Python经典编程习题100例:第24例:求指定数列的和
-
小甲鱼Python教程第15讲--python字符串格式化笔记及习题答案
-
Python从入门到实践习题答案(第十五章 生成数据)