我知道C++通常被认为比游戏更好(至少是大型游戏).为什么是这样?
是什么让Java在这个领域保持竞争力?反对使用Java进行游戏编程的原因最多,哪些是神话?
编辑:我对C/C++有点不熟悉,并没有想到在第1行区分两者.<
如果我有一个看起来像这样的类:
class SomeClass {
public:
SomeClass(int size) {
arr = new int[size];
someInt = size / 10;
};
~SomeClass() {
delete [] arr;
//do I need to somehow delete the int value 'someInt'?
};
private:
int *arr; //pointer to dynamically allocated array
int someInt;
}
Run Code Online (Sandbox Code Playgroud)
究竟应该包含在析构函数中以避免内存泄漏?
我知道我需要删除数组,因为它是动态分配的,但我是否需要对int值或其他基本数据类型做任何事情?
谢谢,乔纳森
好的,希望这很快捷.
我有两个独立的java项目,'Library'和'Project',我在'Project'中有一个类想要实现'Library'中的方法.我正在寻找某种"导入"调用,以便在我的"项目"类的顶部进行调用,以便在该项目中访问"库"中的方法.
我该怎么办?
另一方面,这个'Library'项目只存在,因为我想使用我自己的一些类来补充通常的java库(java.util,java.io等等).有没有办法将我的java项目添加到我的java库中?(即'import java.Library.className;')
谢谢,
乔纳森
我有以下代码,作为游戏的一部分每 10 毫秒运行一次:
private void gameRender()
{
if(dbImage == null)
{
//createImage() returns null if GraphicsEnvironment.isHeadless()
//returns true. (java.awt.GraphicsEnvironment)
dbImage = createImage(PWIDTH, PHEIGHT);
if(dbImage == null)
{
System.out.println("dbImage is null"); //Error recieved
return;
}
else
dbg = dbImage.getGraphics();
}
//clear the background
dbg.setColor(Color.white);
dbg.fillRect(0, 0, PWIDTH, PHEIGHT);
//draw game elements...
if(gameOver)
{
gameOverMessage(dbg);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它输入 if 语句来检查图像是否为空,即使在我尝试定义图像之后也是如此。我环顾四周,如果 GraphicsEnvironment.isHeadless() 返回 true,createImage() 似乎将返回 null。
我不太明白 isHeadless() 方法的用途是什么,但我认为它可能与编译器或 IDE 有关,所以我尝试了两个,两者都得到相同的错误(Eclipse 和 BlueJ)。任何人都知道错误的根源是什么,以及我如何解决它?
提前致谢
乔纳森
...................................................... ......................
编辑:我正在使用 java.awt.Component.createImage(int width, int height)。此方法的目的是确保创建和编辑包含游戏玩家视图的图像,稍后将通过 JPanel …
我在方法的头部有以下代码:
BigInteger foo = BigInteger.valueOf(0);
BigInteger triNum = BigInteger.valueOf(0);
//set min value to 1*2*3*4*5*...*199*200.
BigInteger min = BigInteger.ONE;
BigInteger temp = BigInteger.ZERO;
for(int i=1; i<=200; i++)
{
temp = BigInteger.valueOf(i);
min = min.multiply(temp);
}
System.out.println(min);
while(triNum.compareTo(min) <= 0)
{
foo.add(BigInteger.ONE);
triNum = triNum.add(foo);
System.out.println("triNum: "+triNum);
}
Run Code Online (Sandbox Code Playgroud)
这应该将min加载到一个值(1*2*3*...*199*200),然后将triNum设置为第一个*三角形数**,其值大于min.
问题是,当我运行该方法时,我得到的是一个终端窗口,其中"triNum:0"列表在屏幕上滚动...我的代码中没有看到任何内容(尽管我完全可以做到有些错误,我对math.BigInteger有些不熟悉,这似乎又指向了BigInteger类.有人看到我的代码中有错误吗?
.................................................. .................................................. ......................
*三角形数字是一个可以达到的数字:1 + 2 + 3 + 4 + 5 + 6 + 7 + ......
我目前正在学习java中的基本网络.我一直在玩两台计算机之间的服务器和客户端关系.但是,我无法弄清楚分布式程序(比如视频游戏)如何能够找到"主机"计算机,还能找到服务器运行的端口号,以便在两台计算机之间创建一个Socket.我真正看到创建套接字的唯一方法是使用已知的IP地址,并使用已知的端口号.
如何在LAN网络中搜索另一台搜索客户端的计算机(主机)?
如何在没有"ping"响应的所有可用端口的情况下确定服务器所在的端口(据我所知,这是一种糟糕的形式......关于'服务器攻击'......)?
在诸如视频游戏的情况下,在同一网络上可以存在任何数量的计算机,并且它们中的任何数量可能试图托管或以其他方式运行该应用程序.任何其他重要信息,或者可能参考比我正在使用的更详细的教程,关于在客户端上如此非常少的信息建立连接将是值得赞赏的.
非常感谢,
乔纳森