《Python编程:从入门到实践》 P250:
创建一个游戏,在屏幕上放置一个代表人的矩形,玩家可以用方向键来控制它,让一个球出现在屏幕顶端,且水平位置是随机的,让球以固定的速度下落,如果代表人的矩形与球发生碰撞(代表人将球抓住了),就让球消失,每当人抓住球或者球抵达了屏幕底端,都创建一个新球。
# -*- coding: utf-8 -*-import sys
import pygamefrom pygame.sprite import Group
from random import randintclass Person(pygame.sprite.Sprite):def __init__(self, screen):super().__init__()self.screen = screenself.person_width = 30self.person_height = 5# 在(0,0)处创建一个表示人的矩形,再设置正确的位置 = pygame.Rect(0, 0, self.person_width, self.person_height)self.screen_rect = _rect()x = self.bottom = self.screen_rect.bottom# 存储用小数表示的人的位置x = y = entery)# 移动标志ving_right = ving_left = ving_up = ving_down = lor = (60, 60 ,60)self.speed_factor = 1def update(self):# 更新人的位置ving_right ight < self.screen_rect.x += self.speed_ving_left left > x -= self.speed_ving_up op > y -= self.speed_ving_down bottom < self.screen_rect.y += self.enterx = entery = ydef draw_person(self):(self.screen, lor, )class Ball(pygame.sprite.Sprite):def __init__(self,screen):super().__init__()self.image = pygame.image.load('images/ball.bmp') = _rect()self.speed = 0.5self.screen = screenself.screen_rect = _rect()self.y = )def check_edge(self):# 检查球是否落到屏幕底部op >= self.screen_rect.bottom:return Truedef update(self):self.y += = self.y
# += self.speeddef create_ball(balls, screen):ball = Ball(screen)max_rect_x = ball.screen_rect.right - width + = randint(0, max_rect_ = 0balls.add(ball)def check_person_ball_collisions(screen, person, balls):if pygame.sprite.spritecollideany(person, balls):for ball in ve(ball)create_ball(balls, screen)def check_keydown_events(event, person):if event.key == pygame.K_ving_right = Trueelif event.key == pygame.K_ving_left = Trueelif event.key == pygame.K_ving_up = Trueelif event.key == pygame.K_ving_down = Trueelif event.key == pygame.K_it()def check_keyup_events(event, person):if event.key == pygame.K_ving_right = Falseelif event.key == pygame.K_ving_left = Falseelif event.key == pygame.K_ving_up = Falseelif event.key == pygame.K_ving_down = Falsedef check_events(screen, person,):for event in ():pe == pygame.it()# 移动飞船pe == pygame.KEYDOWN:check_keydown_events(event, person)pe == pygame.KEYUP:check_keyup_events(event, person)def run_game():pygame.init()# 设置屏幕参数screen_width = 1000screen_height = 600screen = pygame.display.set_mode((screen_width, screen_height))bg_color = (230, 230, 230)balls = Group()person = Person(screen)create_ball(balls, screen)while True:screen.fill(bg_color)check_events(screen, person)check_person_ball_collisions(screen, person, balls)for ball in balls:if ball.check_edge():create_ball(balls, screen)breakfor ball in balls:if ball.check_edge():ve(ball)person.update()person.draw_person()balls.update()balls.draw(screen)pygame.display.flip()run_game
本文发布于:2024-02-02 14:03:42,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685382344290.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |