《Python编程:从入门到实践》中的小练习(1)

这篇博客介绍了一个基于Python的系列小游戏开发过程,包括蓝色天空背景的设置,实现角色移动,火箭游戏,按键响应,侧面射击,星星与雨滴效果,以及一个抓球游戏。在每个游戏中,详细讲解了关键代码和技巧,如处理事件循环、图像移动和碰撞检测,为初学者提供了实践经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蓝色天空

创建一个背景为蓝色的Pygame窗口。

#coding:utf-8
import pygame
pygame.init()
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("蓝色天空")
screen.fill((64,64,255))
while True:
     for event in pygame.event.get():
          if event.type==pygame.QUIT:
               pygame.quit()
     pygame.display.flip()

报错点:pygame.error: video system not initialized 看导入模块后有没有调用 init 函数以及缩进问题

游戏角色

找一幅你喜欢的游戏角色位图图像或将一幅图像转换为位图。创建一个类,将该角色绘制到屏幕中央,并将该图像的背景色设置为屏幕背景色,或将 屏幕背景色设置为该图像的背景色。

#coding:utf-8
import pygame
class Game:
     def __init__(self,screen):
          self.screen=screen
          self.image=pygame.image.load('1.png').convert_alpha()
          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.screen.blit(self.image,self.rect)

pygame.init()
screen=pygame.display.set_mode((1200,800))
pygame.display.set_caption("游戏角色")
screen.fill((64,64,255))
game=Game(screen)
while True:
     for event in pygame.event.get():
          if event.type==pygame.QUIT:
               pygame.quit()
     pygame.display.flip()

图片png本身背景是透明的
在这里插入图片描述

火箭

编写一个游戏,开始时屏幕中央有一个火箭,而玩家可使用四个方向键上下左右移动火箭。请务必确保火箭不会移到屏幕外面。

#coding:utf-8
import pygame
class Rocket:
     def __init__(self,screen):
          self.screen=screen
          self.image=pygame.image.load('2.png').convert_alpha()
          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.move_right=False
          self.move_left=False
          self.move_up=False
          self.move_down=False
     def check_event(self):
          for event in pygame.event.get():
               if event.type==pygame.QUIT:
                    pygame.quit()
               elif event.type==pygame.KEYDOWN:
                    self.check_event_down(event)
               elif event.type==pygame.KEYUP:
                    self.check_event_up(event)
     def update(self):
          if self.move_right and self.rect.right<self.screen_rect.right:
               self.rect.centerx+=1
          if self.move_left and self.rect.left>0:
               self.rect.centerx-=1
          if self.move_up and self.rect.top>0:
               self.rect.centery-=1
          if self.move_down and self.rect.bottom<self.screen_rect.bottom:
               self.rect.centery+=1
     def check_event_down(self,event):
          if event.key==pygame.K_RIGHT:
               self.move_right=True
          if event.key==pygame.K_LEFT:
               self.move_left=True
          if event.key==pygame.K_UP:
               self.move_up=True
          if event.key==pygame.K_DOWN:
               self.move_down=True
     def check_event_up(self,event):
          if event.key==pygame.K_RIGHT:
               self.move_right=False
          if event.key==pygame.K_LEFT:
               self.move_left=False
          if event.key==pygame.K_UP:
               self.move_up=False
          if event.key==pygame.K_DOWN:
               self.move_down=False
     def blitme(self):
          self.screen.blit(self.image,self.rect)
               
pygame.init()
screen=pygame.display.set_mode((1200,800))
pygame.display.set_caption("火箭")
rocket=Rocket(screen)
while True:
     screen.fill((96,96,96))
     rocket.blitme()
     rocket.check_event()
     rocket.update()
     pygame.display.flip()

在这里插入图片描述

按键

创建一个程序,显示一个空屏幕。在事件循环中,每当检测到pygame.KEYDOWN 事件时都打印属性event.key 。运行这个程序,并按各种键,看看 Pygame如何响应

#coding:utf-8
import pygame
pygame.init()
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("按键")
while True:
     for event in pygame.event.get():
          if event.type==pygame.QUIT:
               pygame.quit()
          elif event.type==pygame.KEYDOWN:
               print(event.key)
          pygame.display.flip()

出来的是对应的ASCII码
在这里插入图片描述

侧面射击

编写一个游戏,将一艘飞船放在屏幕左边,并允许玩家上下移动飞船。在玩家按空格键时,让飞船发射一颗在屏幕中向右穿行的子弹,并在子弹离开 屏幕而消失后将其删除。

#coding:utf-8
import pygame
from pygame
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值