我是Java程序员,我正在努力解决这些简单的问题.
我怎样才能返回这个多维数组?是否必须返回**指针?我如何在另一个文件中获取它?
static MoveDirection ghost_moves[GHOSTS_SIZE][4];
MoveDirection** get_ghost_moves() {
return ghost_moves;
}
Run Code Online (Sandbox Code Playgroud) 我在过去的6年里一直是Java程序员,从今年年初开始,我对游戏编程感兴趣.所以,我认为从一个流行的游戏开始是一个好主意,我在Java中实现了Pac-Man女士游戏.我可以说我的实现看起来与原始游戏大约有90%相似,我试图尽可能多地使用设计模式和最佳实践,因为这只是学习编写基本2D游戏的个人项目.
现在我完成了编码,我意识到我有19个接口,只有17个类!所以我开始想知道我是否可能过度使用接口.
以下是我使用的几个类/接口的示例:
类 - FullGame(实现FullGameInterface和FullGameObservable)
类 - View1(实现FullGameObserver)
接口 - FullGameInterface(基本功能方法:恢复,暂停,播放等)
接口 - FullGameObservable(允许注册视图以获取更新通知)
界面 - FullGameObserver(由2个不同的游戏视图实现接收通知)
我是否过度使用接口?
你有什么意见?
在过去的两个月里,我一直在努力学习游戏编程的基础知识.所以我用Java编写了几个简单的游戏来学习基础知识,比如俄罗斯方块,跳棋和吃豆人.
现在我想学习/提高我的C技能,所以我有这个用C语言编写游戏的想法,以便更多地了解内存管理,没有OOP等.我之前做过基本的C编程,但从来没有使用图形,所以我不喜欢我不知道从哪里开始.
我应该使用哪些库在C中编写简单的2D游戏?GTK +?开罗图书馆?你可以推荐任何教程吗?图形库?
谢谢
for循环在做什么?我只是无法理解.
list<pair<int, double> > nabors;
list<pair<int, double> >::iterator i;
for (i = nabors.begin(); i != nabors.end() && dist >= i->second; i++);
Run Code Online (Sandbox Code Playgroud) 我需要从列表中选择一个满足某些条件的随机元素.我一直在使用的方法有效,但我确信并非一切都有效.最有效的方法是什么?
以下代码位于while(true)循环内,因此在每次迭代时显然不是非常有效地对列表进行洗牌.
Foo randomPick = null;
Collections.shuffle(myList);
for (Foo f : myList) {
if (f.property) {
randomPick = f;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我需要创建一个脚本来从目录中读取图像,重命名它们,将它们调整为MAX_HEIGHT,MAX_WIDTH,放置水印徽标并将其保存在JPG中.
我正在考虑使用解释性语言,如Ruby,PHP,Perl,Python或任何具有图像处理功能的语言.
你会推荐哪种语言?
我正在使用遗传算法,我希望它尽可能抽象,以便能够重用GA.我定义并实现了一个人口界面,它很有效,但我确信这不是最好的方法.我没有Java Generics的丰富经验.有没有更简单的方法来定义和实现Population接口(例如,可能避免强制转换?避免getChromosomes()中的新列表?)
public interface Population
{
void addChromosomes(List<? extends Chromosome> chromosomes);
List<Chromosome> getChromosomes();
// More code here ...
}
public class TSPPopulation implements Population
{
private List<TSPChromosome> chromosomes;
@Override
public void addChromosomes(List<? extends Chromosome> chromosomes) {
for (Chromosome chromosome : chromosomes) {
this.chromosomes.add((TSPChromosome) chromosome);
}
}
@Override
public List<Chromosome> getChromosomes() {
List<Chromosome> newList = new ArrayList<Chromosome>();
for (TSPChromosome chromosome : chromosomes) {
newList.add(chromosome);
}
return newList;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在努力学习Objective-C.我几乎完成了一个练习,但它没有释放内存:
这就是我所拥有的:
void PrintPolygonInfo() {
NSLog(@"--------------------");
NSLog(@" PRINT POLYGON INFO");
NSLog(@"--------------------");
NSMutableArray *array = [[NSMutableArray alloc] init];
PolygonShape *p1 = [[PolygonShape alloc] initWithNumberOfSides:4 minimumNumberOfSides:3 maximumNumberOfSides:7];
PolygonShape *p2 = [[PolygonShape alloc] initWithNumberOfSides:6 minimumNumberOfSides:5 maximumNumberOfSides:9];
PolygonShape *p3 = [[PolygonShape alloc] initWithNumberOfSides:12 minimumNumberOfSides:9 maximumNumberOfSides:12];
[array addObject:p1];
[array addObject:p2];
[array addObject:p3];
// Log the descriptions
for (id shape in array) {
NSLog(@"%@", shape);
}
// Test the constraints
for (PolygonShape *shape in array) {
[shape setNumberOfSides:10];
}
[p1 release];
[p2 release];
[p3 release];
} …Run Code Online (Sandbox Code Playgroud) 我已经在这工作了一个小时,只是无法得到它.
我有一个Vector2d类:
public class Vector2d
{
public double x = 0.0;
public double y = 0.0;
....
}
Run Code Online (Sandbox Code Playgroud)
这个vector类有一个rotate()方法,这会给我带来麻烦.
第一个片段似乎使x和y值越来越小.第二个工作正常!我错过了一些简单的东西吗?
public void rotate(double n)
{
this.x = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
this.y = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
}
Run Code Online (Sandbox Code Playgroud)
这有效:
public void rotate(double n)
{
double rx = (this.x * Math.cos(n)) - (this.y * Math.sin(n));
double ry = (this.x * Math.sin(n)) + (this.y * Math.cos(n));
x = rx;
y = ry;
}
Run Code Online (Sandbox Code Playgroud)
我在那里找不到任何差异
我在Java中有一小部分算法用于播放多个回合制游戏,例如TicTacToe,Othello,Checkers等.我使用Java Generics(自我绑定类型)来使用相同的算法而不必为每场比赛专门改变它们.我在这里没有显示使用自绑定类型的原因,但是评估函数需要它.
public interface Game<GAME extends Game<GAME>> {
GAME copy();
int getCurPlayer();
...
}
public class TicTacToe implements Game<TicTacToe> {
...
@Override
public TicTacToe copy() {
...
}
@Override
public int getCurPlayer() {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
今天,为了学习,我尝试使用C++模板将我的Java代码移动到C++.
这是我的方法,显然它没有用.
Game.h
template <typename T>
class Game
{
public:
virtual T copy() const = 0;
virtual int cur_player() const = 0;
...
};
Run Code Online (Sandbox Code Playgroud)
TicTacToe.h
class TicTacToe : public Game<TicTacToe>
{
public:
virtual TicTacToe copy() const;
virtual int cur_player() const;
...
};
Run Code Online (Sandbox Code Playgroud)
TicTacToe.cpp …