一线大厂高级前端编写,前端初中阶面试题,帮助初学者应聘,需要联系微信:javadudu

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)

前言

众所周知,ChatGPT是编写代码的一把好手
今天我就要来尝试下,用ChatGPT生成的代码,写出一个回合制文字打怪rpg游戏,大概会包含了关卡选择、打怪、背包系统、技能系统等常见模块,本文默认你有cocos creator基础,一些基础操作(如新建按钮等)不会说的很详细

直接开始吧

这一节,我将用ChatGPT生成地图关卡列表,点击关卡按钮弹出战斗界面

问:我需要一个ui列表来显示地图信息,给出cocos creator代码
答:

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)
生成的代码

// 导入 Cocos Creator 的 UI 模块
const {ccclass, property} = cc._decorator;


// 定义地图列表的脚本
@ccclass
export default class MapList extends cc.Component {
    @property(cc.ScrollView)
    scrollView: cc.ScrollView = null; // ScrollView 组件,用于滚动地图列表

    @property(cc.Prefab)
    mapItemPrefab: cc.Prefab = null; // 地图列表项的预制体

    // 地图信息数据,可以从其他地方加载或者通过代码设置
    private mapInfoList: MapInfo[] = [
        {id: 1, name: "地图1", level: 1, difficulty: "简单"},
        {id: 2, name: "地图2", level: 3, difficulty: "普通"},
        {id: 3, name: "地图3", level: 5, difficulty: "困难"},
    ];

    onLoad() {
        this.initMapList();
    }

    // 初始化地图列表
    private initMapList() {
        // 获取 ScrollView 组件的 content 节点,用于放置地图列表项
        const content = this.scrollView.content;

        // 遍历地图信息数据,生成地图列表项并添加到 content 节点中
        for (const mapInfo of this.mapInfoList) {
            // 使用预制体实例化地图列表项
            const mapItem = cc.instantiate(this.mapItemPrefab);
            
            // 获取地图列表项的 Label 组件,用于显示地图信息
            const label = mapItem.getComponentInChildren(cc.Label);
            if (label) {
                // 设置地图信息到 Label 组件
                //label.string = `地图ID:${mapInfo.id}\n地图名字:${mapInfo.name}\n地图等级:${mapInfo.level}\n难度:${mapInfo.difficulty}`;
                label.string = `${mapInfo.name}`;//这一行被我改了,只显示个名字就够了
            }

            // 将地图列表项添加到 content 节点中
            content.addChild(mapItem);
        }

        // 设置 ScrollView 组件的 content 大小,以适应地图列表的高度
        content.height = this.mapInfoList.length * this.mapItemPrefab.data.height;
    }
}

// 定义地图信息的数据结构
interface MapInfo {
    id: number; // 地图ID
    name: string; // 地图名字
    level: number; // 地图等级
    difficulty: string; // 地图难度
}

在cocos creator里右键新建一个scrollview,挂上脚本,并建好关卡选择按钮的prefab,
把这些拖进检视窗口

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)

操作完结果如图,运行

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)

继续提问,让AI帮我们绑定点击事件

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)

本次生成代码为

 for (const mapInfo of mapDataList) {
            // 使用预制体实例化地图列表项
    const mapItem = cc.instantiate(this.mapItemPrefab);

    // 获取地图列表项的 Label 组件,用于显示地图信息
    const label = mapItem.getComponentInChildren(cc.Label);
    if (label) {
        // 设置地图信息到 Label 组件
        label.string = `${mapInfo.name}`;//\n地图等级:${mapInfo.levels}\n难度:${mapInfo.difficulty}`;
    }
    // 为地图列表项添加点击事件回调函数
    mapItem.on(cc.Node.EventType.TOUCH_END, () => {
        // 弹出战斗界面,传入当前关卡的怪物信息
        this.showBattle(mapInfo.levels[0].monsters[0]);
    }, this);
    // 将地图列表项添加到 content 节点中
    content.addChild(mapItem);
}

// 显示战斗界面
    private showBattle(monster: MonsterInfo) {
        // 使用预制体实例化战斗界面
        const battle = cc.instantiate(this.battlePrefab);

        // 设置战斗界面的怪物信息,可以根据传入的怪物信息进行相应的设置
        const battleScript = battle.getComponent("Battle"); // 假设战斗界面的脚本组件名称为 "Battle"
        if (battleScript) {
            battleScript.initBattle(100,100)
            battleScript.setMonsterInfo(monster); // 调用战斗界面脚本中的方法,设置怪物信息
        }

        // 将战斗界面添加到场景中
        cc.director.getScene().addChild(battle);
    }

代码中生成了战斗界面的预制体,我们需要提前做好,随便用个图片就可以

战斗界面的代码AI没有给我们,继续提问

问:battleScript.setMonsterInfo,给出代码

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)

生成的代码

// 假设战斗界面的脚本组件名称为 "Battle",并且有一个用于设置怪物信息的方法 setMonsterInfo

// 在 Battle.ts 脚本中
export default class Battle extends cc.Component {
    // 假设战斗界面的怪物头像使用了 cc.Sprite 组件来显示
    @property(cc.Sprite)
    monsterImage: cc.Sprite = null;

    // 假设战斗界面的怪物名称和属性使用了 cc.Label 组件来显示
    @property(cc.Label)
    monsterNameLabel: cc.Label = null;

    @property(cc.Label)
    monsterLevelLabel: cc.Label = null;

    @property(cc.Label)
    monsterAttributeLabel: cc.Label = null;

    // 其他代码...

    // 设置怪物信息的方法
    setMonsterInfo(monster: MonsterInfo) {
        // 根据怪物信息设置战斗界面的显示内容
        // 这里可以根据你的游戏需求,更新战斗界面的怪物头像、名称、属性等信息
        // 示例代码:
        this.monsterImage.spriteFrame = monster.spriteFrame;
        this.monsterNameLabel.string = monster.name;
        this.monsterLevelLabel.string = `Level: ${monster.level}`;
        this.monsterAttributeLabel.string = `Attribute: ${monster.attribute}`;
        // ...
    }
}

// 定义怪物信息数据的接口
interface MonsterInfo {
    spriteFrame: cc.SpriteFrame;
    name: string;
    level: number;
    attribute: string;
    // 其他怪物信息字段...
}

把battle脚本挂到battle预制体,运行游戏,此时点击关卡按钮,就会弹出战斗界面了

AI也能写游戏啦,用ChatGPT生成cocos creator代码,编写回合制文字rpg游戏(一)

本节先到这里,下节将完成回合制战斗的流程

原文链接:https://juejin.cn/post/7221085314484994106 作者:周晓杰

(0)
上一篇 2023年4月13日 上午10:26
下一篇 2023年4月13日 上午10:37

相关推荐

发表评论

登录后才能评论