自学内容网 自学内容网

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)!