Qwen2.5-Coder-1.5B代码生成实战:制作简单游戏

1. 快速上手:用自然语言生成你的第一个游戏

你是不是曾经想过自己开发游戏,但又觉得编程太难?现在有了Qwen2.5-Coder-1.5B,一切都变得简单了。这个强大的代码生成模型能听懂你的自然语言描述,帮你把想法变成可运行的游戏代码。

今天我们就来实战体验一下,用Qwen2.5-Coder-1.5B制作一个简单的猜数字游戏。不需要任何编程基础,只需要会描述你想要什么,就能看到代码自动生成。

首先,我们需要打开CSDN星图镜像平台,找到Qwen2.5-Coder-1.5B模型。在模型选择页面选择"qwen2.5-coder:1.5b",然后在输入框中用自然语言描述我们想要的游戏。

2. 猜数字游戏完整实现

2.1 游戏需求描述

让我们从最简单的开始。在输入框中输入:

请用Python编写一个猜数字游戏。游戏规则:程序随机生成1到100之间的数字,玩家有10次猜测机会。每次猜测后,程序会提示猜大了还是猜小了。如果猜对了就恭喜玩家并显示用了多少次猜测,如果10次都没猜中就显示正确答案。

Qwen2.5-Coder-1.5B会立即理解你的需求,并生成完整的Python代码。

2.2 生成的代码解析

模型生成的代码通常是这样:

import random

def guess_number_game():
    # 生成随机数字
    secret_number = random.randint(1, 100)
    attempts = 0
    max_attempts = 10
    
    print("欢迎来到猜数字游戏!")
    print("我已经想好了一个1到100之间的数字,你有10次机会来猜。")
    
    while attempts < max_attempts:
        try:
            guess = int(input(f"\n第{attempts + 1}次尝试,请输入你的猜测: "))
        except ValueError:
            print("请输入有效的数字!")
            continue
            
        attempts += 1
        
        if guess < secret_number:
            print("猜小了!再试一次。")
        elif guess > secret_number:
            print("猜大了!再试一次。")
        else:
            print(f"恭喜你!你在第{attempts}次猜对了!")
            return
    
    print(f"\n很遗憾,你没有在10次内猜中。正确答案是: {secret_number}")

# 启动游戏
if __name__ == "__main__":
    guess_number_game()

这段代码完全符合我们的要求:随机生成数字、10次机会、大小提示、结果反馈,所有功能都实现了。

2.3 运行效果展示

运行这个程序,你会看到类似这样的交互:

欢迎来到猜数字游戏!
我已经想好了一个1到100之间的数字,你有10次机会来猜。

第1次尝试,请输入你的猜测: 50
猜大了!再试一次。

第2次尝试,请输入你的猜测: 25
猜小了!再试一次。

第3次尝试,请输入你的猜测: 37
恭喜你!你在第3次猜对了!

是不是很简单?你只需要描述游戏规则,Qwen2.5-Coder-1.5B就能帮你写出完整的代码。

3. 进阶功能:让游戏更有趣

3.1 添加难度选择

让我们试试更复杂的需求。输入:

请扩展猜数字游戏,添加难度选择:简单模式(1-50,15次机会)、普通模式(1-100,10次机会)、困难模式(1-200,5次机会)。让玩家先选择难度,然后开始游戏。

模型会生成这样的代码:

import random

def select_difficulty():
    print("请选择难度级别:")
    print("1. 简单 (1-50, 15次机会)")
    print("2. 普通 (1-100, 10次机会)")
    print("3. 困难 (1-200, 5次机会)")
    
    while True:
        try:
            choice = int(input("请输入选项(1-3): "))
            if choice == 1:
                return (1, 50, 15)
            elif choice == 2:
                return (1, 100, 10)
            elif choice == 3:
                return (1, 200, 5)
            else:
                print("请输入1-3之间的数字!")
        except ValueError:
            print("请输入有效的数字!")

def guess_number_game():
    min_num, max_num, max_attempts = select_difficulty()
    secret_number = random.randint(min_num, max_num)
    attempts = 0
    
    print(f"\n游戏开始!我想了一个{min_num}到{max_num}之间的数字,你有{max_attempts}次机会。")
    
    while attempts < max_attempts:
        try:
            guess = int(input(f"\n第{attempts + 1}次尝试,请输入你的猜测: "))
        except ValueError:
            print("请输入有效的数字!")
            continue
            
        attempts += 1
        
        if guess < min_num or guess > max_num:
            print(f"请输入{min_num}到{max_num}之间的数字!")
            attempts -= 1  # 不计算这次无效尝试
        elif guess < secret_number:
            print("猜小了!")
        elif guess > secret_number:
            print("猜大了!")
        else:
            print(f"恭喜你!你在第{attempts}次猜对了!")
            return
    
    print(f"\n很遗憾,你没有在{max_attempts}次内猜中。正确答案是: {secret_number}")

if __name__ == "__main__":
    guess_number_game()

3.2 添加分数系统

再试试添加分数功能:

请为猜数字游戏添加分数系统:根据使用的尝试次数和难度级别计算分数。难度越高基础分越高,用的尝试越少得分越高。游戏结束后显示得分。

生成的代码会增加分数计算逻辑:

def calculate_score(difficulty, attempts_used, max_attempts):
    # 基础分根据难度:简单100,普通200,困难300
    base_scores = {1: 100, 2: 200, 3: 300}
    base_score = base_scores[difficulty]
    
    # 根据剩余尝试比例计算奖励分
    remaining_ratio = (max_attempts - attempts_used) / max_attempts
    bonus = int(base_score * remaining_ratio * 0.5)  # 最多50%奖励
    
    return base_score + bonus

# 在游戏成功时调用
score = calculate_score(difficulty_choice, attempts, max_attempts)
print(f"你的得分是: {score}分!")

4. 更多游戏创意实现

4.1 石头剪刀布游戏

除了猜数字,我们还可以尝试其他简单游戏。输入:

请用Python编写一个石头剪刀布游戏。玩家与电脑对战,玩家输入选择(石头、剪刀、布),电脑随机选择,然后判断胜负并显示结果。游戏可以连续玩,直到玩家选择退出。

生成的代码:

import random

def rock_paper_scissors():
    choices = ["石头", "剪刀", "布"]
    winning_conditions = {
        "石头": "剪刀",
        "剪刀": "布", 
        "布": "石头"
    }
    
    player_score = 0
    computer_score = 0
    
    print("欢迎来到石头剪刀布游戏!")
    
    while True:
        print(f"\n当前比分 - 玩家: {player_score} | 电脑: {computer_score}")
        print("请选择: 1.石头 2.剪刀 3.布 4.退出")
        
        try:
            choice = int(input("请输入选项(1-4): "))
            if choice == 4:
                print("游戏结束!最终比分:")
                print(f"玩家: {player_score} | 电脑: {computer_score}")
                if player_score > computer_score:
                    print("你赢了!")
                elif computer_score > player_score:
                    print("电脑赢了!")
                else:
                    print("平局!")
                break
            elif choice < 1 or choice > 3:
                print("请输入1-4之间的数字!")
                continue
        except ValueError:
            print("请输入有效的数字!")
            continue
        
        player_choice = choices[choice - 1]
        computer_choice = random.choice(choices)
        
        print(f"\n你出了: {player_choice}")
        print(f"电脑出了: {computer_choice}")
        
        if player_choice == computer_choice:
            print("平局!")
        elif winning_conditions[player_choice] == computer_choice:
            print("你赢了!")
            player_score += 1
        else:
            print("电脑赢了!")
            computer_score += 1

if __name__ == "__main__":
    rock_paper_scissors()

4.2 简易文字冒险游戏

再来试试更有趣的文字冒险游戏:

请创建一个简单的文字冒险游戏。玩家在一个房间里,可以查看、拿取物品、移动到其他房间。至少要有两个房间和一些可交互物品。

Qwen2.5-Coder-1.5B会生成一个完整的文字冒险框架:

def text_adventure_game():
    current_room = "客厅"
    inventory = []
    rooms = {
        "客厅": {
            "description": "你在一个舒适的客厅里。有一张沙发、一个茶几和一扇通往厨房的门。",
            "items": ["钥匙", "报纸"],
            "exits": {"厨房": "东"}
        },
        "厨房": {
            "description": "这是一个干净的厨房。有冰箱、炉灶和一扇通往客厅的门。",
            "items": ["苹果", "刀"],
            "exits": {"客厅": "西"}
        }
    }
    
    print("欢迎来到文字冒险游戏!")
    print("可用命令: look, take [物品], go [方向], inventory, quit")
    
    while True:
        print(f"\n当前位置: {current_room}")
        print(rooms[current_room]["description"])
        
        if rooms[current_room]["items"]:
            print("可见物品:", ", ".join(rooms[current_room]["items"]))
        
        command = input("\n你要做什么? ").lower().split()
        
        if not command:
            continue
            
        if command[0] == "quit":
            print("游戏结束!")
            break
            
        elif command[0] == "look":
            print(rooms[current_room]["description"])
            if rooms[current_room]["items"]:
                print("可见物品:", ", ".join(rooms[current_room]["items"]))
                
        elif command[0] == "take" and len(command) > 1:
            item = " ".join(command[1:])
            if item in rooms[current_room]["items"]:
                inventory.append(item)
                rooms[current_room]["items"].remove(item)
                print(f"你拿起了{item}")
            else:
                print("这里没有这个物品。")
                
        elif command[0] == "go" and len(command) > 1:
            direction = " ".join(command[1:])
            exits = rooms[current_room]["exits"]
            
            for room, dir_name in exits.items():
                if direction in dir_name or direction == room.lower():
                    current_room = room
                    print(f"你移动到了{current_room}")
                    break
            else:
                print("你不能往那个方向走。")
                
        elif command[0] == "inventory":
            if inventory:
                print("你的物品:", ", ".join(inventory))
            else:
                print("你的背包是空的。")
                
        else:
            print("无效命令。可用命令: look, take [物品], go [方向], inventory, quit")

if __name__ == "__main__":
    text_adventure_game()

5. 使用技巧与最佳实践

5.1 如何获得更好的代码

通过多次尝试,我发现了一些让Qwen2.5-Coder-1.5B生成更好代码的技巧:

明确具体的需求描述

  • 不要说"写一个游戏",要说"用Python写一个猜数字游戏,范围1-100,10次机会"
  • 指定编程语言和具体功能要求

分步请求复杂功能

  • 先请求基础版本
  • 然后逐步添加"请添加难度选择功能"
  • 最后请求"请添加分数计算系统"

提供示例格式

  • 可以描述"像这样的代码结构:有一个主函数,处理用户输入..."
  • 参考已有的代码风格提出要求

5.2 常见问题解决

在使用过程中可能会遇到的一些问题:

生成的代码不完整

  • 重新提交请求,要求"生成完整的可运行代码"
  • 添加"包括所有必要的import语句"

代码逻辑有问题

  • 描述具体问题:"生成的代码在猜对后不会结束游戏,请修复"
  • 请求添加错误处理:"请添加输入验证,防止非数字输入"

想要特定代码风格

  • 明确要求:"使用函数式编程风格"
  • 或者"使用面向对象的方式重写"

6. 总结

通过今天的实战,我们看到了Qwen2.5-Coder-1.5B在代码生成方面的强大能力。从简单的猜数字游戏到稍微复杂的文字冒险游戏,只需要用自然语言描述需求,模型就能生成可运行的代码。

关键收获

  • Qwen2.5-Coder-1.5B特别适合生成小型到中型的程序代码
  • 描述越具体,生成的代码质量越高
  • 可以分步构建复杂功能,先基础后进阶
  • 生成的代码通常很规范,有良好的结构和注释

下一步建议: 如果你对编程感兴趣,可以尝试用Qwen2.5-Coder-1.5B生成更多类型的游戏,比如:

  • 井字棋游戏
  • 记忆翻牌游戏
  • 简易贪吃蛇游戏
  • 数字华容道游戏

每次尝试都是学习编程的好机会,你可以观察生成的代码,理解其逻辑,甚至手动修改和改进。Qwen2.5-Coder-1.5B不仅是代码生成工具,更是学习编程的良师益友。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐