我确定此问题已经解决过,我很好奇它是如何完成的.我有代码,在运行时,我想扫描目录的内容并加载功能.
具体来说,我正在使用脚本引擎,我希望能够添加函数调用.我希望核心引擎提供非常有限的功能.用户应该能够通过第三方库添加其他功能,我希望引擎扫描并加载.这是怎么做到的?
Stackoverflowers!
我最近开始涉足Ruby,我有几个问题.首先是一些背景:我习惯于C++和Java继承,并且总是不喜欢在很多与游戏相关的场景中继承如何工作(例如,roguelike).主要是由于很难以良好的方式封装行为.例如,在Java中:(不是我用这种方式实现它,但这是我能在短时间内提出的最好的例子.)
Actor extends GameObject
Creature extends Actor
FlyingCreature extends Creature
Dragon extends FlyingCreature
Humanoid extends Creature
Run Code Online (Sandbox Code Playgroud)
......到目前为止很好,对吗?但是,如果我决定实施一个"Gargoyle"(有翼的人形)类怎么办?然后它将属于FlyingCreature和Humanoid - 所以我必须封装其中一个特征,然后重构它或其他东西.
理想的解决方案 - 个人 - 如果有一些有效的方法将独特的属性/功能提取到封装的对象中,然后让每个GameObject都是可以相互交互的不同模块化组件的组合.(除了诸如Item:GameObject,Actor:GameObject,Tile:GameObject之类的可能性之外没有继承,即使那时也是如此).
因此,可以通过创建组件树来轻松创建特定的GameObject(例如,一个orc) - 粗略地像这样但更灵活:
[Actor]
[Organic]/ | \[Persona] // Name, etc..
| \
[Humanoid] [Intelligence] // AI or PlayerController
|
[Inventory] // [ArrayList of items...]
|
[Equipment] // [Hash of :slot -> Item]
Run Code Online (Sandbox Code Playgroud)
但更重要的是:当我开始学习Ruby时,我了解了它的元编程能力,它是由于语言的反射而产生的运行时自由,以及模块的扩展/包含功能.所以我认为,如果我将特定的特征划分为模块(并确保有仔细的命名策略等),那么我可以允许我的类根据上下文和事件包含行为.例如,假设我有一个名叫Bob O'Copp的矮人 - 他在一个黑暗的下水道地牢中探险时,他会骑着一只小小的吸血鬼仔猪.因此,他陷入了一些使他变异的神奇化学水坑 - 给他可爱的仙女翅膀.但由于矮人通常不是鸟类,他的班级不具备飞行功能.但对于这个例子,它将是一个有效的特征.因此,我认为"bob.extend Flight"将是一个很好的解决方案.
但是如果其中一个特征是暂时的呢?让我们说鲍勃奥科普找到一个卷轴,在法术持续时间内召唤魔法翅膀......但是.经过大量的谷歌搜索后,我还没有找到任何关于如何在应用后撤回/取消扩展或排除mixins的好信息 - 如果实际上可行的话.因为这里有很多非常聪明且经验丰富的程序员,所以我想正式恳请你赐予你一些伟大的洞察力,强大的大胡子啊!:-)
那么......几个问题:
热切期待任何回复与期待
非常感谢提前,
-Robocopulate
我试图模块化一个冗长的if..else功能.
$condition = "$a < $b";
if($condition)
{
$c++;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将文字字符串翻译成逻辑表达式?
我将igraph中的fastgreedy算法用于加权无向图中的社区检测。之后,我想看一下模块化,对于不同的方法,我有不同的价值,我想知道为什么。我提供了一个简短的示例,演示了我的问题:
library(igraph)
d<-matrix(c(1, 0.2, 0.3, 0.9, 0.9,
0.2, 1, 0.6, 0.4, 0.5,
0.3, 0.6, 1, 0.1, 0.8,
0.9, 0.4, 0.1, 1, 0.5,
0.9, 0.5, 0.8, 0.5, 1), byrow=T, nrow=5)
g<-graph.adjacency(d, weighted=T, mode="lower",diag=FALSE, add.colnames=NA)
fc<-fastgreedy.community(g)
fc$modularity[3]
#[1] -0.05011095
modularity(g,membership=cutat(fc,steps=2),weights=get.adjacency(g,attr="weight"))
#[1] 0.07193047
Run Code Online (Sandbox Code Playgroud)
我希望两个值都相同,并且如果我尝试对非加权图进行相同操作,则将获得相同的值。
d2<-round(d,digits=0)
g2<- graph.adjacency(d2, weighted=NULL, mode="lower",diag=FALSE, add.colnames=NA)
fc2<-fastgreedy.community(g2)
plot(fc2,g2)
fc2$modularity[3]
#[1] 0.15625
modularity(g2,membership=cutat(fc2,steps=2))
#[1] 0.15625
Run Code Online (Sandbox Code Playgroud)
另一个用户也有类似的问题,但是我有igraph的当前版本,所以应该不是问题。有人可以向我解释为什么我看不到我的代码有区别吗?
我是一位经验丰富的Java开发人员,需要移植Java应用程序以供Web使用,并且我一直在考虑使用Typescript来做到这一点。目前,我想保持传统的Java样式的软件包是文件夹的层次结构,每个“叶子”文件只有一个类。
我一直在看Typescript文档,并且看到类似的信息../path/to/module。都是这样包括亲戚吗?有某种基本目录选项可以让我得到类似的东西import com.ancient.java.MyType;吗?
另外,是否package com.ancient.java;要在Typescript中声明要执行的操作?
我看了看文档,但是在所有有关内部和外部名称空间以及导出等的讨论中,我发现它们不容易阅读。
有人可以将其简化为类似于Java的东西吗?我敢肯定,以后我会根据需要逐步介绍所有复杂的内容。这在代码中是什么样的?
我在大学的第一个学期学习 C 编程。我们已经获得了模块化代码的介绍,我的问题的基本要点是我创建了一个提示用户继续或退出程序的函数。显然,在此之前我还有其他一些函数,我在 main() 中调用它们。请记住,这些函数位于单独的 C 文件中。如果用户输入“Y”(即从头开始启动程序),我希望循环回到 main(),但鉴于我的初学者知识,我很难弄清楚如何去做。任何帮助/指导将不胜感激!
int continueOrExit() {
char response;
char upperResponse;
printf("Do you wish to continue the program? Y/N");
scanf("%c", &response);
upperResponse = toupper(response);
while(upperResponse == 'Y')
main(); // this is the bit which I struggle with
.....
}
Run Code Online (Sandbox Code Playgroud) 我发现这是一个非常有趣的读物:http://www.devmaster.net/articles/oo-game-design/
作者反复说"哇,如果仔细实施,这可能会很棒.这就是未来!".好吧,不是很有用.我需要代码,最重要的是,我需要证明这种设计实际上是有效的.
您是否知道实现本文中提到的一些概念的示例?也许一个可以学习的小型开源游戏?或者,至少,讨论类似概念的地方?
我已经看到了一些类似的问题,但没有什么比我想弄清楚的更多,所以这里有.我有一个具有许多视图状态的灵活应用程序,其中一些经常使用,其中一些不是.目前,所有这些状态都驻留在一个mxml文件中,因此在客户端浏览器中只生成并加载了一个swf文件.我想通过将它们分成不同的源文件并将状态从一个文件加载到另一个文件来模块化这些视图状态,但是,我仍然希望用户只需要加载一个swf文件.我的主要原因是避免源文件超过10,000行.有没有一种解决这个问题的标准方法?
谢谢.
我们的应用程序是模块化的(模块组执行特定的事情).这些模块具有事件处理程序.可以从其他模块或应用程序菜单触发这些事件.
情况:
模块A(具有UI)接收事件"deleteitem".事件参数应包含要删除的项目名称.但在这种情况下它是null.在某个地方,有人搞砸了什么.
问题(S):
模块应该抛出吗?记住,该模块将抛入事件处理程序并可能导致应用程序崩溃,因为模块编写者不知道是否处理了异常.
上述场景是关于从模块excpetions这可能导致应用程序崩溃的投掷一个更大的问题的snaphot.反对它的论点是应用程序可以在没有特定模块的情况下继续工作.那么,谁应该确保 - 模块或应用程序?
Java9引入了类似于OSGI和Maven Dependecies的强大模块性.
是否有maven插件能够构建检测maven依赖项的java 9依赖项?
例如,来自
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
....
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.3-jre</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
至
module my-module{
requires com.google.guava;
exports com.mycompany.app;
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这篇文章,但它没有那么有用 - 如何表达maven对java ee功能的依赖以转换到Java 9?
modularity ×10
c ×2
java ×2
apache-flex ×1
c# ×1
c++ ×1
conditional ×1
dynamic ×1
game-engine ×1
if-statement ×1
igraph ×1
java-9 ×1
maven ×1
mixins ×1
module ×1
module-info ×1
namespaces ×1
oop ×1
php ×1
ruby ×1
states ×1
typescript ×1
weighted ×1
wpf ×1