gpt4 book ai didi

c - 我将如何 'spawn' 或在程序上实例化多个生物?

转载 作者:行者123 更新时间:2023-12-02 22:17:21 26 4
gpt4 key购买 nike

当我决定自学编程时,我从 Java 开始。尽管我熟悉编写简单的程序化软件(主要是用 PHP),但我最近开始意识到,对于更复杂的操作,我依赖对象。

我的第一个 Java 游戏通过实例化对象以随机速度在随机位置生成对手。我对在 C 中按程序实现这个概念感到困惑(我对此知之甚少),但我只能考虑为每个对手的变量创建不同的数组并将数组索引用作伪对象引用'变量'.

int size[50]; // opponent size
for (i = 0; i < 100; i++) {
size[i] = random_number();
}

是否有一个简单的解决方案被我面向对象的思维忽略了?或者某些问题是否真的适用于面向对象的概念,以至于您必须伪造对象(或至少使用类似的模型)?我一直在 C 代码中看到结构,我知道它们在概念上类似于类,但我只知道这些。所以我想知道这样的事情是否可以用完全非面向对象的思维方式来实现。实例化没有真正的替代品,是吗?这只是内存分配,所以在我看来,某些 C 程序别无选择,只能使用某种我认为是对象的形式来编写。

请告诉我我忽略了一些东西,否则我无法尊重谴责面向对象范式的 C 纯粹主义者。 (我绝不是一个面向对象的狂热分子;尽管如此,我的头脑已经非常习惯这个想法,并且很难通过一个不提供你习惯的东西的不同镜头来看待事物。)

谢谢!

最佳答案

作为一个最初也是 OO 程序员的人,我也花了一些时间才习惯了过程式编程。对我来说最重要的是习惯使用指针,并记住函数不是由对象管理的,而是作用于你给它们的“对象”。无论如何,我认为您可能正在寻找这样的东西来帮助您获得您正在尝试做的事情的程序图像。

struct creature {
int speed;
int size;
};

void init_creature(struct creature *c) {
c->speed = random_number();
c->size = random_number();
}

int main() {
struct creature creatures[10];

for (int i = 0; i < (sizeof(creatures)/sizeof(struct creature)); i++) {
struct creature c = creatures[i];
init_creature(&c);
}
}

关于c - 我将如何 'spawn' 或在程序上实例化多个生物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com