Python小游戏26——塔防游戏
安装Pygame: 在开始之前,请确保你已经安装了Pygame库。你可以使用pip来安装它:
bash
pip install pygame
【python】代码
import pygame
import sys
import random
# 初始化Pygame
pygame.init()
# 设置游戏窗口大小
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("塔防游戏逻辑示例")
# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
# 定义敌人类
class Enemy:
def __init__(self, x, y, speed):
self.x = x
self.y = y
self.speed = speed
self.rect = pygame.Rect(x, y, 50, 50) # 敌人的矩形表示,用于碰撞检测
def move(self):
self.x += self.speed
self.rect.x = self.x
def draw(self, screen):
pygame.draw.rect(screen, RED, self.rect)
# 定义塔类
class Tower:
def __init__(self, x, y, range_, damage):
self.x = x
self.y = y
self.range_ = range_
self.damage = damage
self.rect = pygame.Rect(x - 25, y - 25, 50, 50) # 塔的矩形表示,用于碰撞检测(中心对齐)
def is_in_range(self, enemy):
# 使用Pythagorean定理计算距离
distance = ((self.x - enemy.x) ** 2 + (self.y - enemy.y) ** 2) ** 0.5
return distance <= self.range_
def attack(self, enemy):
# 简化逻辑:每次攻击减少敌人一定生命值(这里假设敌人只有1点生命值)
enemy.killed = True # 标记敌人已被杀死(实际游戏中可能需要更复杂的生命值系统)
def draw(self, screen):
pygame.draw.rect(screen, GREEN, self.rect)
# 游戏状态变量
running = True
enemies = []
towers = []
clock = pygame.time.Clock()
# 生成敌人
def spawn_enemy():
x = random.randint(0, screen_width - 50)
y = 0 # 敌人从屏幕顶部生成
speed = random.randint(1, 3)
enemies.append(Enemy(x, y, speed))
# 生成塔
def spawn_tower():
x = 400 # 假设塔固定在屏幕中央
y = 500 # 塔的位置
range_ = 200 # 塔的攻击范围
damage = 1 # 塔的伤害值(这里简化为1)
towers.append(Tower(x, y, range_, damage))
# 初始化游戏元素
spawn_tower() # 生成一个塔
# 游戏主循环
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 生成敌人(这里为了演示,每秒钟生成一个敌人)
if random.randint(0, 10) == 0:
spawn_enemy()
# 更新敌人状态
for enemy in enemies[:]: # 使用[:]来创建敌人的一个浅拷贝,以便在循环中安全地移除元素
enemy.move()
# 检查敌人是否超出屏幕底部(即被消灭)或到达塔的攻击范围
if enemy.x > screen_width or any(tower.is_in_range(enemy) for tower in towers):
for tower in towers:
if tower.is_in_range(enemy):
tower.attack(enemy) # 塔攻击敌人
enemies.remove(enemy) # 移除敌人
else:
# 绘制敌人
enemy.draw(screen)
# 绘制塔
for tower in towers:
tower.draw(screen)
# 填充背景色
screen.fill(WHITE)
# 更新屏幕显示
pygame.display.flip()
# 控制帧率
clock.tick(30)
# 退出Pygame
pygame.quit()
sys.exit()
代码详解
我们定义了两个类:Enemy和Tower。Enemy类表示敌人,具有移动和绘制的方法。Tower类表示塔,具有检查敌人是否在攻击范围内、攻击敌人和绘制的方法。
在游戏主循环中,我们每秒生成一个敌人,并更新它们的状态。如果敌人到达塔的攻击范围或超出屏幕底部,则将其移除。同时,我们绘制了所有的敌人和塔。
代码知识点:
1. 编程语言基础
• 变量和数据类型:整数、浮点数、字符串、布尔值、数组、列表、元组、字典/哈希表、集合等。
• 控制结构:条件语句(if-else)、循环(for、while)、嵌套循环、迭代器等。
• 函数和过程:定义函数、参数传递(值传递、引用传递)、返回值、递归函数等。
• 面向对象编程(OOP):类、对象、继承、多态、封装、抽象等。
2.数据结构与算法
• 基本数据结构:链表、栈、队列、树(二叉树、平衡树等)、图等。
• 排序与查找:冒泡排序、选择排序、插入排序、快速排序、归并排序、 堆排序等;线性查找、二分查找等。
• 高级算法:动态规划、贪心算法、回溯算法、分治算法等。
3. 编程范式与设计模式
• 编程范式:命令式编程、函数式编程、响应式编程、面向对象编程等。
• 设计模式:单例模式、工厂模式、抽象工厂模式、观察者模式、策略模式等。
4. 网络与并发编程
• 网络通信:TCP/IP协议、HTTP/HTTPS协议、WebSocket等。
• 并发与多线程:线程、进程、锁、信号量、条件变量、线程池、异步编程等。
5. 数据库与SQL
• 数据库类型:关系型数据库(MySQL、PostgreSQL)、非关系型数据库(MongoDB、Redis)等。
• SQL基础:SELECT、INSERT、UPDATE、DELETE语句;JOIN操作、子查询、索引等。
6. 文件与输入输出(I/O)
• 文件操作:读取文件、写入文件、文件遍历、文件权限管理等。
• 输入输出流:标准输入输出、文件输入输出、网络输入输出等。
7. 测试与调试
• 单元测试:JUnit、pytest等测试框架。
• 调试技巧:断点调试、日志记录、错误处理与异常捕获等。
8. 版本控制
• Git基础:仓库创建、分支管理、提交与合并、冲突解决等。
9. 特定语言特性
• Python:列表推导式、生成器、装饰器、上下文管理器等。
• Java:泛型、注解、Lambda表达式、Stream API等。
• JavaScript:闭包、Promise、async/await、ES6+新特性等。
10. 开发工具与环境
• 集成开发环境(IDE):VS Code、PyCharm、IntelliJ IDEA等。
• 构建工具:Maven、Gradle、npm、yarn等。
• 版本管理工具:Docker、Kubernetes等容器化技术。
原文地址:https://blog.csdn.net/cxh666888_/article/details/143728887
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!