c++游戏编程 游戏编程软件
大家好,关于c++游戏编程很多朋友都还不太明白,今天小编就来为大家分享关于游戏编程软件的知识,希望对各位有所帮助!
c++游戏编程过程
C++效率高,游戏一般需要运行的非常快,其它语言都不如C++编写的程序快,所以一般用C++编写游戏的表现效果是最好的,所以你的选择很对,当然现学JAVA游戏编程也很好的。
学习编程最重要的是有恒心,多积累经验,多自己尝试编些东西,你上面写的东西说明你已经有了很大的决心,这点很可贵,学习过程中有困难是肯定的,但我凭上面你说的相信你会成功的,建议如下:
找本C++教材,先自己看,推荐
钱能. C++程序设计教程.第一版.清华大学出版社
然后再学一下VC++,再自己试着多编一些东西,编程最重要的是积累经验。
写游戏主要是理解面向对象,OOA,OOD,设计模式和算法设计,特别是游戏中设计到的各种寻路算法,等等。!完成了上面两步工作,有空再多看看面向对象编程和设计方面的书籍,UML,设计模式类的书籍,再专门找些游戏编程的书经常研究,你就完全可以从事软件开发这个很有“前途”的职业了
Visual C++游戏编程人员至少要会的:
c++语言的语法,标准库
会使用VC,
了解DirectX编程.
下面的多多益善:
软件工程,会用某个源代码管理工具(VSS SVN什么的)
数据结构和算法,游戏编程对效率比较关心。
英语,许多好的资料都是英文的。
经验,这个最重要。
再给你介绍一些网站能找c++游戏编程的资料:
游戏制作人的网络平台www.gameres.com
中国网游研发中心www.ogdev.net
购买游戏编程书籍的专业网站www.dearbook.com
学一个月,可以用VC写一些小程序自己玩玩
学两个月,可以用VC写像样点的东西在周围人面前炫炫
学三个月,可以用VC给老板开始干活了
学六个月,开始重头去学C++
学一年后,决定要不要继续,if(继续)学习MFC、ATL、STL、C#、BCB、Network、Databa
se、Algorithm... else开始就是个错误
学三年后,学会怎么来用编程语言来解决问题,VC、BCB等都只是解决问题的工具。这时候
你如果还在学C++,你可以从事软件开发这个很有“前途”的职业了
学习C++基础然后到掌握C++游戏编程这个过程要多久时间?
这个问题并不能给出明确的回答,因为学习这东西因人而异,如果你是很认真的学,作为正常人,2至3个月,可以在这个语言入门了(是指语言的基本用法,不包括界面之类的东西)。
但是要游戏编程,你得先学windows编程,例如MFC(据我所知,暴雪的魔兽世界也是以MFC为基础编写的),但是游戏里面使用了大量的DirectX的函数,你还得花上两个月的时间去学习DirectX编程。总体上需要的时间是8个月到一年。还有就是你一定要懂得一些基本的算法和数据结构。
推荐《windows游戏编程大师技巧(第二版)》和它的下卷《3D游戏编程大师技巧》。作者讲的比较浅显易懂,而且风格也比较幽默。
opengl和directx都是标准,计算机图形api的标准,和有没有硬件加速无关
opengl是The Industry's Foundation for High Performance Graphics,公开标准,很多公司共同参与的
directx只有微软参与,而且只能在微软的平台上运行
PC游戏越来越趋向directx,主机还是趋向于opengl es,其实说白了这2个没很大差别,学习的话directx资料多点,sdk也很好用。
顺便说一下,游戏的主流运行环境不是windows,是主机。
c++游戏编程,写一个游戏编程,简单点
#include<iostream>
#include<iomanip>
usingnamespacestd;
constintX=21;//棋盘行数
constintY=21;//棋盘列数
charp[X][Y];//定义棋盘
intm=0;//定义临时点,保存输入坐标
intn=0;
voiddisplay()//输出棋盘
{
for(inti=0;i<X;i++)
cout<<setw(3)<<setfill('')<<i;
cout<<endl;
for(inti=1;i<Y;i++)
{
cout<<setw(3)<<setfill('')<<i;
for(intj=1;j<X;j++)
cout<<setw(3)<<setfill('')<<p[i][j];
cout<<endl;
}
}
voidblack()//黑方落子
{
cout<<"请黑方输入落子位置:
"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
if(m<=0||m>=X||n>=Y||n<=0)
{
cout<<"超出棋盘范围,请重新输入正确坐标!
";
black();
}
elseif((p[m][n]==1)||p[m][n]==2)
{
cout<<"该点已有棋子,请重新选取落子点!
";
black();
}
else
p[m][n]=1;//黑方用1来表示
system("cls");
display();
}
voidred()//红方落子
{
cout<<"请红方输入落子位置:
"
<<"请输入落子的行数:";
cin>>m;
cout<<"请输入落子的列数:";
cin>>n;
if(m>=X||m<=0||n<=0||n>=Y)
{
cout<<"超出棋盘范围,请重新输入正确坐标!
";
red();
}
elseif((p[m][n]==1)||p[m][n]==2)
{
cout<<"该点已有棋子,请重新选取落子点!
";
red();
}
else
p[m][n]=2;//红方用2来表示
system("cls");
display();
}
intevalue()//只需要判断落子点为中心的九点“米”字是否连续即可
{
intk=0,r=0;
/*斜线判断*/
for(k=3;k<X-2;k++)//两条,其中的p[k][r]!='-'是排除空子的情况
{
for(r=3;r<Y-2;r++)
{
if(p[k][r]!='-'&&p[k-2][r-2]==p[k][r]&&p[k-1][r-1]==p[k][r]&&p[k+1][r+1]==p[k][r]&&p[k+2][r+2]==p[k][r])
return1;
elseif(p[k][r]!='-'&&p[k+2][r-2]==p[k][r]&&p[k+1][r-1]==p[k][r]&&p[k-1][r+1]==p[k][r]&&p[k-2][r+2]==p[k][r])
return1;
}
}
/*横线判断*/
for(k=1;k<X;k++)//p[k][r]!='-'是排除空子的情况
for(r=3;r<Y-2;r++)
if(p[k][r]!='-'&&p[k][r-2]==p[k][r]&&p[k][r-1]==p[k][r]&&p[k][r+1]==p[k][r]&&p[k][r+2]==p[k][r])
return1;
/*竖线判断*/
for(k=3;k<X-2;k++)//p[k][r]!='-'是排除空子的情况
for(r=1;r<Y;r++)
if(p[k][r]!='-'&&p[k-2][r]==p[k][r]&&p[k-1][r]==p[k][r]&&p[k+1][r]==p[k][r]&&p[k+2][r]==p[k][r])
return1;
return0;
}
intmain()
{
memset(p,'-',441);//初始化为‘-’
cout<<"欢迎使用简易双人对战五子棋游戏
"
<<"五子棋棋谱如下:
";
display();
while(1)
{
red();
if(evalue())
{
cout<<"红方赢!
";
break;
}
black();
if(evalue())
{
cout<<"黑方赢!
";
break;
}
}
return0;
}人人对战五子棋
如何用C++编写一个小游戏
一个用C++编程的小游戏,可以实现的功能如下:
1、随机生成数字;
2、数字消除合并;
3、判定游戏结束;
一、游戏主体:
因为用C++写的,所以用了类,棋盘用了一个二维数组,m是棋盘规格,取了4。
class game
{
public:
int i, j;
game(){
count1= 0;
for(i= 0; i< m; i++)
for(j= 0; j< m; j++)
chessboard[i][j]= 0;
srand((unsigned)time(NULL));
x= rand()% m;
y= rand()% m;
if(count1== 1|| count1== 0)
chessboard[x][y]= 2;
else
chessboard[x][y]= 4;
showchessboard();
}//构造初始棋盘
void add(int count1);//新增数字
void showchessboard();//显示棋盘
void up();
void down();
void left();
void right();
bool gameover();//游戏失败
private:
int chessboard[m][m];
int x, y, count1, count2, temp1, temp2, k;//c1-连消,c2-空位标记,t1-判连消,t2,k-临时变量
bool flag;//判消
};
二、随机生成数字
void game::add(int count1)
{
for(i= 0; i< m; i++)
for(j= 0; j< m; j++)
{
if(chessboard[i][j]== 0)
goto loop;
}
showchessboard();
return;
loop:srand((unsigned)time(NULL));
do{
x= rand()% m;
y= rand()% m;
} while(chessboard[x][y]!= 0);
if(count1< 2)
chessboard[x][y]= 2;
else
chessboard[x][y]= 4;
showchessboard();
}
三、数字消除合并
void game::up()
{
temp1= count1;
flag= false;
for(j= 0; j< m; j++)
for(i= 0; i< m;)
{
for(; i< 4&& chessboard[i][j]== 0; i++);//找非零值
if(i== 4)
break;
else
{
for(k= i+ 1; k< 4&& chessboard[k][j]== 0; k++);//找下一个非零值
if(k== 4)
break;
else if(chessboard[i][j]== chessboard[k][j])//匹配
{
chessboard[i][j]*= 2;
chessboard[k][j]= 0;
i= k+ 1;
flag= true;
}
else if(chessboard[i][j]!= chessboard[k][j]&& k< 4)//不匹配
{
i= k;
}
}
}
for(j= 0; j< m; j++)//排列棋盘
for(i= 0, count2= 0; i< m; i++)
{
if(chessboard[i][j]!= 0)
{
temp2= chessboard[i][j];
chessboard[i][j]= 0;
chessboard[count2][j]= temp2;
count2++;
}
}
}
四、判断游戏结束
bool game::gameover()
{
if(flag)
count1++;//判连消
if(temp1== count1)
count1= 0;//未消除,连消归零
add(count1);
for(i= m- 1, j= 0; j< m; j++)//最后一行
{
if(j== m- 1)//右下角
{
if(chessboard[i][j]== 0)
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
else
{
if(chessboard[i][j]== 0|| chessboard[i][j]== chessboard[i][j+ 1])
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
}
for(i= 0, j= m- 1; i< m; i++)//最后一列
{
if(i== m- 1)//右下角
{
if(chessboard[i][j]== 0)
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
else
{
if(chessboard[i][j]== 0|| chessboard[i][j]== chessboard[i+ 1][j])
return false;
else if(chessboard[i][j]== 2048)
{
cout<<"You Win~
";
return true;
}
}
}
for(i= 0; i< m- 1; i++)
for(j= 0; j< m- 1; j++)
{
if(chessboard[i][j]== 2048)
{
cout<<"You Win!
";
return true;
}
else if(chessboard[i][j]== chessboard[i][j+ 1]|| chessboard[i][j]== chessboard[i+ 1][j]|| chessboard[i][j]== 0)
return false;
}
cout<<"Game over.
";
return true;
}
扩展资料:
C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。
生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。但是该过程实际上分成两个步骤。
第一步是对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);
第二步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。
参考资料来源:
百度百科-C++
c++游戏编程和游戏编程软件的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!