大神娱乐游戏们有c++游戏吗

833被浏览136,215分享邀请回答26025 条评论分享收藏感谢收起353 条评论分享收藏感谢收起随笔 - 712&
评论 - 52&
&&&&&&&&&&&
早年开发游戏必须用C++,这没得说,年,java还没有nio,其他动态语言不抗重负,只能C/C++能开发出完整可用的游戏服务端。直到2005年,韩国的游戏很多都还是纯C++写服务端,金山之前也开发过很多纯粹C++的游戏服务端,后来大家都切了。现代选择有很多:java + javascript, c+python, c+lua, scala, go, erlang。我们面向性能的服务器用 java,面向逻辑服务器 python,面向高并发的会选择 scala,次一级高并发或者性能测试程序(机器人)会选择 gevent。那是不是我们就不用C++呢?我们用 C来做网络,不用C++,但是C的比例在所有代码中占比有限。这是否意味我们可以放弃C/C++了?也不是:C语言是一把锋利的匕首,而现代动态语言是一把长剑。平时匕首可以藏在身上,大部分时候用长剑披荆斩棘就够了,但当你碰到坚硬的石头,长剑不管用了,那么拿出匕首来果断的切碎他。对于一个成熟领域而言,我的建议是尽量用更高级一点的开发语言,因为游戏开发很多核心技术都有了较为妥当的解决方法。大量的服务端逻辑其实都是在等待,等待网络,等待数据库,这种情况下用C得不偿失。但是服务端有一些地方还是躲不开C/C++,比如当服务器涉及到 3D计算的话(国内很多2D服务端,国外很多3D服务端),大量的矢量矩阵,除了用C++封装出一套好用的数学库外,即便直接用java写,那也是很麻烦的。再比如现在快速动作越来越多,为了让玩家操作更流畅,我需要基于 UDP快速可靠协议,协议开发用 java或者scala,性能上是没办法满足要求的,况且协议实现后要和客户端通信,你没法让所有客户端跟着你一起用java/scala。再比如某些cpu密集的抽象度高的模块,如 aoi或者 ai模块。对于一个新兴领域而言,C/C++很多情况下是你别无选择的东西。比如移动化浪潮刚起步的时候,还没有啥 cocos或者 unity你真要开发游戏,你必须迅速的使用起 OpenGL ES和 OpenSL,然后再叠加某一脚本,以快制胜,第一批移动浪潮上发财的就是这些游戏。又或者,你可以根本躲开,先不介入,等到几年后cocos和 unity成熟了,你在介入用lua / C#写程序。再比如服务端你如果离开熟悉的游戏和web,去开发一个陌生的领域,如流媒体服务,你会发现这怎么和10年前的游戏一样呀,什么高级工具都不给我用用,这时你可以再等个四五年应该高级工具会出现,异或你想领先别人时,你就果断的拿出 C/C++来解决之,这就是C独有的开拓新领域能力。大部分答案都是非黑即白,非此即彼。不要只会C不会动态语言,避免成为一个傻逼;也不要只会动态语言不会C,避免离开熟悉的温室就活不下去。对于一个新手而言,如果什么都没学过,我的建议是先用快速开发的东西,把项目弄起来再说,有精力有机会的情况下,也不能完全放弃一些基础的东西,让自己残缺了。PS:在相同架构下,就纯粹性能而言,各种语言性能差距到底是多少呢?如果只开发回合制这些慢节奏游戏,或者HTTP接口,大部分情况都在等待数据库等待用户消息的话,差别确实不大,的确可能5%都不到。如果cpu密集了,那么可以参考下面的图表,总体来说是10-50倍的性能差别:&img src="https://pic3.zhimg.com/36ce0e9ad05a38e9c12cf52e24179ae6_b.jpg" data-rawwidth="289" data-rawheight="339" class="content_image" width="289"&有人问,说了半天,这个也不行,那个也不完美,而我时间有限,有没有一个更经济实惠的方法呀?如何才一次性达到彼岸呀?时间有限项目吃紧有没有更好的选择?我说有啊!那就是 java。国内游戏开发绕来绕去还是脚本+C+erlang+go,难道大家就不会其他东西了么?大部分可以的情况下,除了非用C/C++,我推荐各位认真考虑下 java,这个性能上最接近C的东西,能承当大部分cpu密集型事务,却又不会象c那样 crash了找都找不到问题在哪里。同时面向高并发时基于原生jvm的 scala可以提供类似 erlang的简单方式,函数式编程 & 大规模并发协程 & actor;同时 java可以很方便的同 javascript结合,js的速度应该是动态语言里面最快的吧。再者 java还有 groovy,可以提供 python/ruby的泛型编程,用超高的开发效率和 python/ruby媲美,同时还能和 scala 结合实现高并发。最重要的是写 java好招聘,到处都是写 java的工程师,大部分语言级的培训都可以省略了。国内游戏开发者很多拒绝学习 java,因为很多开发者自己是碰都没碰过。现在拒绝 java的人,大部分只是在游戏圈子里面打转的人,偶尔开发下 web,缺乏其他行业和领域的经验。看看除游戏外,当今多少世界级的开源服务器是用 java开发的?游戏就真有那么特殊么?我看不是,国外大把java开发的游戏服务端,各位如果知道游戏服务端领域有啥 java技术栈解决不了的事情,麻烦告诉我一声。再看看java上下游的 scala, javascript, groovy这些东西。所以建议各位,有空有条件的情况下,认真考虑下 java技术栈,世界很大,不是只有游戏;即便游戏,现在的开发方法真的对吗?
阅读(...) 评论()哪位大神有c++做得小游戏或者系统……_百度知道
哪位大神有c++做得小游戏或者系统……
我有更好的答案
return a,&
} }}/************************/ printf(&:&速度越快得分越高哟&quot?&;) { srand(time(0));//#include&}/jia++) {
printf(&&#92,0}; int x=0,map[1]==0; for(int jia=0;jia&); &;************************/int one(void)/&#47,&int fsui(int z)/
ch='0';#include&lt,&); } }while(start()==1);开局选项{ int map[3]={1#include&stdio.h&/结尾选择int main(){ do { one();n&); printf(&%20s◆%36s◆\n&?&/清屏{ system(&/产生随机数2{ int a,b; srand(clock()); b=rand(); srand(b); a=rand()%z; }/************************/ &; for(;产生随机数3int one(void);
printf(&%20s加载中.;n%20s小提示:%s&#92,空格确认&//void clrscr(void)//&#47,s;stdlib.h&gt,&等待(不能输入)void clrscr(void);,map[0]==0?&
&,& if(b&10)
}}/************************/w; int *p=NULL; while(1) { int w1=0; &); printf(&%20s◆%15s%s开始%s%13s◆\n&;100; &;time.h&/产生随机数2int ffsui(int z);/等待void sleep2(float a);开局选项int start(void).h&#include&ctype.h&gt,&/等待{ time_t now=clock(); for(;/&#47,jia);
sleep2(0; &); printf(&%20s◆%15s%s退出%s%13s◆\n&,& &,& &,map[2]==0?&
&:&【&,map[2]==0?&
&:&】&,& &); printf(&%20s◆%28s轮回出品◆\n&,& &,& &); printf(&%20s&,& &); while(w2&20) {
printf(&◆&);
w2++; } printf(&\n&);char ch=getch(); if(p==NULL)
map[0]=0; else
*p=0; switch(ch) { case 'w':
case 's':
case ' ':
printf(&\n%20s游戏规则: 玩家需在5秒内记住几个随机出现\n%20s的数字,5秒后将掩盖数字,然后再随机给出\n%20s一个已出现过的数字,玩家要在20秒内找到被\n%20s掩盖的相同的数字的位置,找到进入下一关,\n%20s失败游戏结束&,& &,& &,& &,& &,& &);
printf(&\n\n\n%20s任意键返回&,& &);
} map[x]=1; p=&map[x]; clrscr(); }}/************************/int jie(void)//结尾选择{ int map[2]={1,0}; int *p=NULL; int x=0; int j=0; printf(&\n&); do { printf(&%20s%s再来一次&,& &,map[0]==0?&
&:&☆&); printf(&%10s%s主菜单&,& &,map[1]==0?&
&:&☆&); char ch=getch(); if(p==NULL)
map[0]=0; else
*p=0; switch(ch) { case 'a':
case 'd':
case ' ':
} map[x]=1; p=&map[x]; printf(&\r&); }while(1);}/************************/int start(void)//主程序{cuo: do { int ge[Y+1][X+1]; int map[Y][X]; int fmap[Y][X]; int G=2; int K=2;//难度 int fen=0;//得分 int guan=1;//关卡 int zeng=5; int f=0; do {
int y=0;//光标坐标
int d=5+f;//等待时间
int shu=20;//输入时间
int miao=0;//记秒
int xun=0;
for(int y1=0;y1&Y+1;y1++)//初始化选择框
for(int x1=0;x1&X+1;x1++)
ge[y1][x1]=0;
for(int y2=0;y2&Y;y2++)//初始化数字
for(int x2=0;x2&X;x2++)
map[y2][x2]=sui();
xyz:for(int fy2=0;fy2&Y;fy2++)//防止数字相同
for(int fx2=0;fx2&X;fx2++)
for(int yy2=0;yy2&Y;yy2++)
for(int xx2=0;xx2&X;xx2++)
if(fy2==yy2&&fx2==xx2)
if(map[fy2][fx2]==map[yy2][xx2])
xy:map[fy2][fx2]+=(rand()%10);
if(map[fy2][fx2]&=100)
map[fy2][fx2]/=2;
for(int y3=0;y3&Y;y3++)//复制数字
for(int x3=0;x3&X;x3++)
fmap[y3][x3]=0;
for(int t1=0;t1&t1++)//等待进度条
printf(&\n\n%30s关卡:%d\n\n&,& &,guan);
printf(&%60s得分:%d\n&,& &,fen);
printf(&%20s记忆时间:&,& &);
for(int i=0;i&d;i++)
printf(&■&);
printf(&\n&);
for(int y4=0;y4&G+1;y4++)//输出部分
printf(&%20s&,& &);
for(int x4=0;x4&K+1;x4++)
printf(&%s\n&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%s──&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%20s&,& &);
for(int fx4=0;fx4&K+1;fx4++)
if(fx4==K)
printf(&│\n&);
printf(&│ %d &,map[y4][fx4]);
sleep2(1);
xun=map[fsui(G)][ffsui(K)];
int Q=0;//关闭循环
for(int y1=0;y1&Y+1;y1++)//初始化选择框
for(int x1=0;x1&X+1;x1++)
ge[y1][x1]=0;
ge[y][x]=1;
ge[y][x+1]=2;
ge[y+1][x]=3;
ge[y+1][x+1]=4;
printf(&\n\n%30s关卡:%d\n\n&,& &,guan);
printf(&%61s得分:%d\n\n&,& &,fen);
for(int y4=0;y4&G+1;y4++)//掩盖部分
printf(&%20s&,& &);
for(int x4=0;x4&K+1;x4++)
printf(&%s\n&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%s──&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%20s&,& &);
for(int fx4=0;fx4&K+1;fx4++)
printf(& &);
if(fx4==K)
printf(&│\n&);
if(fmap[y][x]==0)
printf(&│ ?? &);
printf(&│ %d &,map[y4][fx4]);
printf(&\n%20s请找出数字:%d&,& &,xun);
printf(&\n\n%10s剩余时间:&,& &);
for(int l=0;l&l++)
printf(&■&);
printf(&\n&);
if(kbhit()!=0)
char ch=getch();
switch(ch)
case 'w':
case 'a':
case 'd':
if(x==K-1)
case 's':
if(y==G-1)
case ' ':
fmap[y][x]=1;
if(miao%20==0)
if(shu==0)
sleep1(0.05f);
}while(1);
if(shu==0)
printf(&\n\n\n%30s游戏结束!\n&,& &);
printf(&\n\n%30s得分:%d\n&,& &,fen);
if(jie()==1)
ge[y][x]=1;
ge[y][x+1]=2;
ge[y+1][x]=3;
ge[y+1][x+1]=4;
printf(&\n\n%30s关卡:%d\n\n&,& &,guan);
printf(&%60s得分:%d\n\n&,& &,fen);
for(int y4=0;y4&G+1;y4++)//再输出部分
printf(&%20s&,& &);
for(int x4=0;x4&K+1;x4++)
printf(&%s\n&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%s──&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%20s&,& &);
for(int fx4=0;fx4&K+1;fx4++)
if(fx4==K)
printf(&│\n&);
if(fmap[y4][fx4]==0)
printf(&│ ?? &);
printf(&│ %d &,map[y4][fx4]);
if(xun==map[y][x])
printf(&\n%25s正确!下一关&,& &);
if(guan%4==0)
if(G==5||K==5)
printf(&\n%25s加大难度!&,& &);
sleep2(1);
printf(&\n\n%30s关卡:%d\n\n&,& &,guan);
printf(&%61s得分:%d\n\n&,& &,fen);
for(int y4=0;y4&G+1;y4++)//输出部分
printf(&%20s&,& &);
for(int x4=0;x4&K+1;x4++)
printf(&%s\n&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%s──&,ge[y4][x4]==0?&┼&:(ge[y4][x4]==1?&┏&:(ge[y4][x4]==2?&┓&:(ge[y4][x4]==3?&┗&:&┛&))));
printf(&%20s&,& &);
for(int fx4=0;fx4&K+1;fx4++)
if(fx4==K)
printf(&│\n&);
printf(&│ %d &,map[y4][fx4]);
printf(&\n%20s请找出数字:%d&,& &,xun);
printf(&\n\n%20s很遗憾错误!&,& &);
printf(&\n\n\n%30s游戏结束!\n\n&,& &);
printf(&\n\n%30s得分:%d\n&,& &,fen);
if(jie()==1)
fen+=(guan+shu);//分数 }while(9); }while(1);}w a s d移动,空格确认;,& &quot,0; &); printf(&%20s◆%15s%s帮助%s%13s◆\清屏int sui(void),&n&,d移动;】&;
&quot,b;n\ while(w1&20) {
printf(&◆&:&【&),b; srand(b);************************/void sleep1(float a)/) {
fflush(stdout);int ffsui(int z)/&#47,&
& srand(time(0)); b=rand()%100:&int sui(void)/clock()-now&a*CLOCKS_PER_SEC;产生随机数3{ 产生随机数int fsui(int z);&#47.01f);
if(kbhit()!=0)
char ch=getch(); &,a..(%d%%)&; &; a=rand()%100;}/
w1++; } printf(&\】&;************************/void sleep2(float a)&#47,&quot,jia&50;}/ &; a=rand()%z;主程序int jie(void);/ b=rand();n\void sleep1(float a);/ &;%20s&/产生随机数{ cls&);}/************************/const int X=5?&,map[1]==0?&
&; int w2=0;clock()-now&a*CLOCKS_PER_SEC; return 0,&///等待{ time_t now=clock();const int Y=5:& for(;n&; srand(a);//:&【&#include&)
fflush(stdout),map[0]==0
采纳率:57%
你好!你需要什么类型的游戏?是窗体程序还是DOS程序
只要c++做得都可以,像什么连连看,贪吃蛇之内的都可以,你有吗
留下你的,。企,。鹅,。号,。吧
1150中间去掉648092
fgets(strline,HSR_MAXLEN,hsrfp);
//读取一行
strline[strlen(strline)-1]='\0';
myhsrinfo-&tphsr[i].id=i+1;
strcpy(myhsrinfo-&tphsr[i].name,strline);
myhsrinfo-&tphsr[i].sel_count=0;
if (i&=hsrcount)
fgets(strline,HSR_MAXLEN,hsrfp);
myhsrinfo-&sel_max=atoi(strline);
fclose(hsrfp); }
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 玩游戏傍大神 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信