第一章 Pygame 游戏模块学习入门之简单基础学习

系列文章目录

第一章 Pygame 游戏模块学习入门之简单基础学习

第二章 Pygame 游戏模块学习入门之pygame精灵

第三章 Pygame 游戏模块学习入门之飞机大战

第四章 Pygame 游戏模块学习进阶之飞机大战(复杂版)



前言

提示:这里可以添加本文要记录的大概内容:

Pygame是一个强大而灵活的游戏开发工具,可以帮助开发者快速创建2D游戏和多媒体应用程序。无论是初学者还是有经验的开发者,都可以通过Pygame实现自己的游戏创意,妃常有趣哦!!


提示:以下是本篇文章正文内容,下面案例可供参考

一、pygame是什么?

Pygame是一个基于Python编程语言的开源模块,用于开发2D游戏和多媒体应用程序。它提供了一套丰富的工具和函数,可用于处理图形、声音、输入设备和碰撞检测等方面。通过Pygame,开发者可以轻松地创建游戏角色、背景、音效和特效等元素,从而实现自己的游戏创意。

Pygame的主要特点包括:

  1. 简单易用:Pygame提供了直观的API和简化的编程接口,使得开发者能够快速上手,无论是初学者还是有经验的开发者都可以轻松使用。

  2. 跨平台性:Pygame基于Python开发,可以在多个平台上运行,包括Windows、Mac OS、Linux等。

  3. 强大的图形功能:Pygame提供了图像加载、绘制、旋转、缩放等功能,开发者可以使用这些功能创建游戏中的角色、背景等元素。

  4. 多媒体支持:Pygame可以处理音频、视频等多媒体内容,开发者可以使用它播放音乐、音效等效果。

  5. 碰撞检测:Pygame提供了碰撞检测函数,可以检测游戏角色之间的碰撞情况,从而实现游戏中的交互效果。

二、基础语句

  • 初始化模块:pygame.init()

  • 设置标题
    pygame.display.set_caption(“标题名”)

  • 设置图标
    icon = pygame.image.load(图标文件)
    pygame.display.set_icon(icon)

  • 构建窗口:screen = pygame.display.set_mode(size=大小) 尺寸为元组,例如:(400, 400)

  • 加载图片:pygame.image.load(图片)

  • 游戏帧率25FPS:clock = pygame.time.Clock()
    clock.tick(25) ==》 每秒25帧

  • 背景音乐:pygame.mixer.music.load(音乐文件mp3)

  • 设置循环播放:pygame.mixer.music.play(loops=1) 1为否,0为是循环

  • 播放音乐:pygame.mixer.Sound(音乐文件mp3)

  • 获取所有事件:get是一个阻塞函数,直到事件触发
    for event in pygame.event.get()

  • 退出事件
    if event.type == pygame.QUIT:; pygame.quit() # 初始化 ; sys.exit() # 清理

  • 空格事件: if event.type == pygame.KEYUP and event.key == pygame.K_SPACE

  • 填充背景填充色: screen.fill(“颜色”, 位置)

  • 绘制背景: screen.blit(图片, 位置)

  • 更新绘制: pygame.display.flip()

三、实例代码(简单版)

# 1. 导入模块
import pygame
import sys
import time

# 2. 初始化模块
pygame.init()

# 12.设置标题和图标
pygame.display.set_caption("我的世界")
icon = pygame.image.load("素材/pygame图标.ico")
pygame.display.set_icon(icon)

# 3. 构建窗口
SIZE = (400, 400)
screen = pygame.display.set_mode(size=SIZE)


# 8. 加载图片背景
bg = pygame.image.load("素材/背景1.jpg")

# 10.加载人物图片
pos_y = 175
rw = pygame.image.load("素材/人物(90x90).png")
# 打印人物坐标长度
center_rw = rw.get_rect()
# print(center_rw.left, center_rw.right, center_rw.top, center_rw.bottom, center_rw.center)
# # 0 45 0 45 (22, 22)

# 13.游戏帧率25FPS
clock = pygame.time.Clock()

pause = False

# 16.背景音乐
pygame.mixer.music.load("素材/背景音乐.mp3")
pygame.mixer.music.play(loops=1)

pause_sound = pygame.mixer.Sound("素材/effect.mp3")


# 4. 主循环
while True:
    # 每秒25帧
    clock.tick(25)

    # 14.控制运动
    if not pause:
        pos_y -= 3
        if pos_y <= -45:
            pos_y = 400

    # 5. 获取所有事件
    # get是一个阻塞函数,直到事件触发
    for event in pygame.event.get():
        # 退出事件
        if event.type == pygame.QUIT:
            # pygame.QUIT(常量)  ==》 256 表示关闭
            pygame.quit()  # 初始化
            sys.exit()  # 清理

        # 15.空格暂停
        if event.type == pygame.KEYUP and event.key == pygame.K_SPACE:
            pause_sound.play()
            pause = not pause

    # 6. 填充背景填充色
    # (0, 0, 600, 401) ==> 位置
    screen.fill("lightgrey", (0, 0, 400, 400))

    # 9.绘制背景
    screen.blit(bg, (100, 50))

    # 11.绘制人物
    screen.blit(rw, (175, pos_y))

    # 17.绘制血条
    pygame.draw.rect(screen, "red", (center_rw.left, center_rw.top, 80, 10))
    pygame.draw.rect(screen, "green", (center_rw.left, center_rw.top, 40, 10))

    # 7.更新绘制
    pygame.display.flip()

总结

提示:这里对文章进行总结:

以上是今天的模块讲解了,晚安,希望━((′д`)爻(′д`))━!!!大家都能睡个好觉!!!!!

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单Pygame游戏的源代码。这个游戏是一个简单的打飞机游戏,玩家控制一个小飞机,躲避敌机的攻击并射击它们。你可以用这个源代码作为学习 Pygame 编程的参考。 ```python import pygame import random # 初始化 Pygame pygame.init() # 定义一些常量 SCREEN_WIDTH = 480 SCREEN_HEIGHT = 800 ENEMY_COUNT = 5 FPS = 60 # 创建窗口 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption('打飞机') # 加载图片 background_image = pygame.image.load('background.png').convert() player_image = pygame.image.load('player.png').convert_alpha() enemy_image = pygame.image.load('enemy.png').convert_alpha() bullet_image = pygame.image.load('bullet.png').convert_alpha() # 定义游戏对象 class GameObject: def __init__(self, x, y, image): self.x = x self.y = y self.image = image self.rect = self.image.get_rect() self.rect.x = self.x self.rect.y = self.y def draw(self, surface): surface.blit(self.image, (self.x, self.y)) # 定义玩家类 class Player(GameObject): def __init__(self, x, y, image): super().__init__(x, y, image) self.speed = 5 self.bullets = [] def update(self): keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: self.x -= self.speed if keys[pygame.K_RIGHT]: self.x += self.speed if keys[pygame.K_UP]: self.y -= self.speed if keys[pygame.K_DOWN]: self.y += self.speed if keys[pygame.K_SPACE]: self.fire() # 更新子弹 for bullet in self.bullets: bullet.update() def fire(self): bullet = Bullet(self.x + self.rect.width / 2, self.y) self.bullets.append(bullet) # 定义敌机类 class Enemy(GameObject): def __init__(self, x, y, image): super().__init__(x, y, image) self.speed = 3 def update(self): self.y += self.speed # 定义子弹类 class Bullet(GameObject): def __init__(self, x, y): super().__init__(x, y, bullet_image) self.speed = 10 def update(self): self.y -= self.speed # 创建游戏对象 player = Player(SCREEN_WIDTH / 2 - player_image.get_rect().width / 2, SCREEN_HEIGHT - player_image.get_rect().height, player_image) enemies = [Enemy(random.randint(0, SCREEN_WIDTH - enemy_image.get_rect().width), -enemy_image.get_rect().height, enemy_image) for i in range(ENEMY_COUNT)] # 游戏主循环 clock = pygame.time.Clock() while True: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() # 更新游戏对象 player.update() for enemy in enemies: enemy.update() # 绘制游戏对象 screen.blit(background_image, (0, 0)) player.draw(screen) for enemy in enemies: enemy.draw(screen) for bullet in player.bullets: bullet.draw(screen) # 检测碰撞 for enemy in enemies: if player.rect.colliderect(enemy.rect): pygame.quit() exit() for bullet in player.bullets: if bullet.rect.colliderect(enemy.rect): enemies.remove(enemy) player.bullets.remove(bullet) # 更新屏幕 pygame.display.update() # 控制帧率 clock.tick(FPS) ``` 注意,这个游戏还有一些不完美的地方,比如没有限制玩家的移动范围,敌机的速度和生成位置都是固定的,没有动态变化等。你可以在这个基础上进行改进和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值