高中刚毕业,自学C++到数组了,想提前了解了解有哪些开发软件,想做一款2d游戏,像素的那种。
如果有绘画软件的话也可以推荐一下。
非常感谢
2d游戏可以用 flash、director 之类的来制作,或者用 pygame(python语言),或者用 easyx(c语言)
不知道你这个问题是否已经解决, 如果还没有解决的话: 服务端最大业务处理能力,即每秒可以处理的业务请求数量。注重客户端的数量不要太多。重视 CPU 和内存使用率的变化。
这里对客户端程序改为,
for(int ii = 0; ii < 2000; ii++){
if(biz000() == false) break;
usleep(100000);
}
把 sh 文件中客户端程序运行脚本改为,
运行结果如下,
可以看出 CPU 消耗和内存消耗,及其进程的情况。然后为了测试每秒接受信号情况,对接收进行抓包,使用 linux 语句为,
grep "2021-10-30 22:11:19 接收" /tmp/ExitAndFreeServer.log|wc
这是在运行过一段时间以后的了,有些客户端程序运行结束了,少了一些,所以运行结果如下,
这就是从日志里面抓取的数据接收情况,分析上面运行结果就能够知道,在当下 19 s 接收的情况,相当于 1s 有 60 条记录。可以看出,这样客户端的压力还不够,继续加压,把测试客户端程序改为,
// 用 killall client 杀死所有相关进程
for(int ii = 0; ii < 2000; ii++){
if(biz000() == false) break;
usleep(10000);
}
再运行 test.sh 脚本,在运行两次以后,观察到结果如下,
能够看到,这样测试时候,CPU 资源已经被占用的还剩 16% 多了,现在压力已经相当大了,也可以查看到相应的进程数和内存情况。在过一会后又恢复到了正常情况。
为了能够看出处理业务情况,查看服务端数据报文,然后看 1 s 中报文情况,使用语句
grep "2021-10-30 22:41:25 接收" /tmp/ExitAndFreeServer.log|wc
grep "2021-10-30 22:41:21 接收" /tmp/ExitAndFreeServer.log|wc
使用语句查看服务端报文情况结果如下 可以看出,在 1s 中接收到 18107 报文,然后 CPU 还剩资源 10% 多,因此知道服务端压力差不多是 18107 。
推荐使用Unity和Adobe Photoshop来开发像素的2D游戏和绘画软件。
Unity是一款非常流行的跨平台游戏引擎,它支持2D和3D游戏开发,并且自带强大的物理引擎和图形引擎。在Unity中使用C#或JavaScript编写游戏逻辑,另外,Unity还内置了许多工具和插件,例如动画制作和粒子系统等,可以帮助你快速开发高质量的游戏。
Adobe Photoshop则是一款专业的图形处理软件,可以用于绘制角色、地图、界面等素材,并且支持像素级的绘制和编辑,可以满足像素游戏开发的需求。此外,Photoshop还集成了精细的色彩调整工具和图层管理工具,可以让你轻松处理各种复杂的图形素材。
如果你已经掌握了C++和数组,可以考虑使用C++配合OpenGL来开发2D游戏。OpenGL是一款跨平台的图形库,可以帮助你在不同平台上实现图形渲染,同时使用C++开发可以让你更好地掌握游戏开发的底层实现。
代码示例:
#include <GL/glut.h>
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON); //绘制正方形
glColor3f(1.0, 0.0, 0.0);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();
}
int main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutCreateWindow("OpenGL Setup Test");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
这段代码使用OpenGL绘制了一个红色的正方形,并且可以在不同的平台上运行。使用OpenGL开发2D游戏需要一定的图形学基础和编程经验,如果你有需要,可以参考OpenGL的相关教程和书籍来学习。
对于读取大容量数据的问题,可以使用C++标准库中的fstream和iostream来实现,可以通过压缩数据或者只读取指定的列来提高读取效率。对于忽略前几行的问题,可以先使用seekg方法将文件指针定位到需要读取的行数上,并使用getline方法读取每一行数据。代码示例:
#include <fstream>
#include <sstream>
#include <vector>
int main() {
std::ifstream file("data.txt");
if (!file.is_open()) {
std::cout << "Unable to open file!" << std::endl;
return 1;
}
std::string line;
int line_count = 0;
while (std::getline(file, line)) {
++line_count;
if (line_count <= 2) { //忽略前两行
continue;
}
std::stringstream ss(line);
double data1, data2, data3;
ss >> data1 >> data2 >> data3; //只读取前三列数据
//处理读取到的数据
}
file.close();
return 0;
}
这段代码实现了读取文件中的数据,并且可以忽略前两行和只读取前三列。同时,使用stringstream可以方便地进行数据类型的转换。