大家好,欢迎来到IT知识分享网。
使用pycharm简单编写一个2D球类游戏,包含一个玩家控制的球和多个自动移动的球。玩家可以通过键盘控制自己的球来“吃掉”其他球,增加得分
示例代码:
# !/usr/bin/env python # -*- coding:utf-8 -*- """ @file: ball_game.py @author: czx @time: 2024/4/22 15:59 """ # 导入库 import pygame #创建游戏 import random #随机数生成 # 定义颜色 RED = (255, 0, 0) # 初始化pygame pygame.init() # 定义屏幕宽度和高度 WIDTH, HEIGHT = 800, 600 # 设置屏幕和标题 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("球球大作战") # 设置时钟,控制游戏的帧率 clock = pygame.time.Clock() # 定义球类 class Ball: def __init__(self, x, y, radius, color): self.x = x self.y = y self.radius = radius self.color = color self.speed_x = random.randint(-5, 5) self.speed_y = random.randint(-5, 5) def move(self): self.x += self.speed_x self.y += self.speed_y # 边界检查,确保球不会移出屏幕 if self.x < self.radius or self.x > WIDTH - self.radius: self.speed_x = -self.speed_x if self.y < self.radius or self.y > HEIGHT - self.radius: self.speed_y = -self.speed_y def draw(self, screen): pygame.draw.circle(screen, self.color, (self.x, self.y), self.radius) # 初始化玩家球 player = Ball(WIDTH // 2, HEIGHT // 2, 15, RED) # 初始化地图大小和球的数量 MAP_WIDTH, MAP_HEIGHT = WIDTH, HEIGHT ball_NUM = 10 # 创建球列表 balls = [] for _ in range(ball_NUM): # 随机生成球的半径,确保玩家球的半径大于其他球 radius = random.randint(10, min(30, player.radius - 1)) if _ == 0 else random.randint(1, 30) # 随机生成球的x和y坐标,确保球完全在屏幕上 x = random.randint(radius, MAP_WIDTH - radius) y = random.randint(radius, MAP_HEIGHT - radius) # 创建一个新球并添加到balls列表中 balls.append(Ball(x, y, radius, (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))) # 定义移动玩家球的函数 def player_move(keys, player): if keys[pygame.K_LEFT]: player.x -= 5 if keys[pygame.K_RIGHT]: player.x += 5 if keys[pygame.K_UP]: player.y -= 5 if keys[pygame.K_DOWN]: player.y += 5 # 边界检查,确保玩家球不会移出屏幕 if player.x < player.radius: player.x = player.radius elif player.x > MAP_WIDTH - player.radius: player.x = MAP_WIDTH - player.radius if player.y < player.radius: player.y = player.radius elif player.y > MAP_HEIGHT - player.radius: player.y = MAP_HEIGHT - player.radius # 定义吃球的函数 def eat_ball(player, balls): global score balls_to_remove = [ball for ball in balls if ball.x < 0 or ball.x > MAP_WIDTH or ball.y < 0 or ball.y > MAP_HEIGHT] balls_to_remove.extend([ball for ball in balls if player.x - player.radius < ball.x < player.x + player.radius * 2 and player.y - player.radius < ball.y < player.y + player.radius * 2]) for ball in balls_to_remove: score += 1 balls.remove(ball) # 定义显示函数 def show(screen, player, balls): screen.fill((0, 0, 0)) # 填充背景为黑色 player.draw(screen) # 绘制玩家球 for ball in balls: ball.draw(screen) # 绘制其他球 pygame.display.flip() # 更新显示屏幕 # 主循环 running = True score = 0 while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False keys = pygame.key.get_pressed() player_move(keys, player) for ball in balls: ball.move() eat_ball(player, balls) show(screen, player, balls) # 确保在所有绘制操作后调用show函数 clock.tick(60) # 设置帧率为60 # 退出pygame pygame.quit()
如果还没有安装pygame的话,可以通过以下命令来安装:
pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple
代码正常运行后,会创建一个简单的球类游戏,玩家可以通过键盘的箭头键来控制玩家球,吃掉其他小球以增加得分。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133292.html