C/C++精品视频集
这是我收集的部分C/C++精品视频集.
其中部分下载地址:
2015-04-13 C语言精髓所在——指针的艺术
链接: 密码: nivq
2015-04-16 C++打造酷炫鼠标-Vico老师.
链接: 密码: 5j3z
2015-04-24 C++开发最牛贪吃蛇游戏------盛大内部核心技术
链接: 密码: 1n8e
视频太多没一一上传.
如果你需要更多可以加QQ:1329938469
下面是《《坦克大战》》和《《俄罗斯方块》》
坦克大战:(2页到18页)
#include
#include
#include
#include
#include
using namespace std;
HANDLE Mutex=CreateMutex(NULL,FALSE,NULL);//互斥对象
int GameOver=0;
int level=0;
int map[23][23];
//坦克种类,Normal为玩家坦克
#define Normal 0
#define Red 1
#define Blue 2
#define Green 3
//方向的宏定义
#define Up 0
#define Down 1
#define Left 2
#define Right 3
//地图标记的宏定义
#define Empty 0
#define Player 1
#define PlayerBullet 2
#define EnemyBullet 3
#define Enemy 4
int Kill;
int KillRed;
int KillGreen;
int EnemyExist;
void SetPos(int i,int j)//设定光标位置
{
COORD pos={i,j};
HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos);
}
void HideCurSor(void)//隐藏光标
{
CONSOLE_CURSOR_INFO info={1,0};
HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(Out,&info);
}
int sharp[4][12]=
{
{0,1,1,0,1,1,1,2,2,0,2,2},
{0,0,0,2,1,0,1,1,1,2,2,1},
{0,1,0,2,1,0,1,1,2,1,2,2},
{0,0,0,1,1,1,1,2,2,0,2,1},
};//此数组用来保存坦克各个方向的形状信息
DWORD WINAPI Bulletfly(LPVOID lpParameter);//子弹函数申明
void Updata();//更新界面信息函数申明
class Tank//坦克类
{
private:
int Direction;//方向
int hotpoint[2];//活动点
int Speed;//速度
int FirePower;//火力
public:
Tank(int dir,int hot1,int hot2,int typ,int spe,int firepow)//构造函数
{
Direction=dir;
hotpoint[0]=hot1;
hotpoint[1]=hot2;
Type=typ;
Speed=spe;
FirePower=firepow;
}
int Type;//坦克的种类(详见宏定义)
int ID;//坦克在MAP中的标记(详见宏定义)
int FireEnable;//是否可以开火
int Life;//生命值
void Running();//运行函数
int Judge(int x,int y,int ID);//判断是否可以绘制坦克
void DrawTank();//重绘坦克
void Redraw();//擦除坦克
int GetSpeed()//获取速度
{
return Speed;
}
int GetFire()//获取火力
{
return FirePower;
}
int GetDirection()//获取方向
{
return Direction;
}
int GetHotX()//获取活动点坐标
{
return hotpoint[0];
}
int GetHotY()
{
return hotpoint[1];
}
void IncreaseFire()//火力+
{
FirePower++;
}
void IncreaseSpeed()//速度+
{
Speed++;
}
void ChangeDirection(int newD)//改变方向
{
Direction=newD;
}
void ChangePos(int x,int y)//改变活动点
{
hotpoint[0]=x;
hotpoint[1]=y;
}
};
Tank player(Right,0,0,Normal,1,1);//玩家
Tank enemy(Left,20,0,Red,1,1);//敌人
void Tank::DrawTank()//绘制坦克
{
int i;
int nx,ny;
if(Type==Red)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED);
else if(Type==Blue)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_BLUE);
else if(Type==Green)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_GREEN);
else if(Type==Normal)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
for(i=0;i<6;i++)
{
nx=hotpoint[0]+sharp[Direction][i*2];
ny=hotpoint[1]+sharp[Direction][i*2+1];
SetPos((ny+1)*2,nx+1);//利用sharp数组相对于点x,y绘制形状
map[nx][ny]=ID;
cout<<"■";
}
}
void Tank::Redraw()//擦除坦克,原理同上
{
int i;
int nx,ny;
for(i=0;i<6;i++)
{
nx=hotpoint[0]+sharp[Direction][i*2];
ny=hotpoint[1]+sharp[Direction][i*2+1];
map[nx][ny]=Empty;
SetPos((ny+1)*2,nx+1);
cout<<" ";
}
}
int Tank::Judge(int x,int y,int dir)//判断当前是否可以绘制坦克
{
int i;
int nx,ny;
for(i=0;i<6;i++)
{
nx=x+sharp[dir][i*2];
ny=y+sharp[dir][i*2+1];
if(nx<0||nx>=23||ny<0||ny>=23||map[nx][ny]!=Empty)//不能绘制,返回1
return 1;
}
return 0;
}
void Tank::Running()//坦克运行函数
{
int newD;
//坦克的运行
while(1)
{
if(Life==0)
{
EnemyExist=0;//敌人不存在
return;
}
if(GameOver==1)
return;
if(FireEnable==1&&GameOver==0)//如果可以开火
{
WaitForSingleObject(Mutex,INFINITE);//线程拥有互斥对象
FireEnable=0;//设为不可开火
HANDLE bullet=CreateThread(NULL,0,Bulletfly,&ID,0,NULL);//创建子弹线程
CloseHandle(bullet);
ReleaseMutex(Mutex);//释放互斥对象
Sleep(100);
}
WaitForSingleObject(Mutex,INFINITE);//线程拥有互斥对象
srand((int)time(0));
newD=rand()%4;
if(newD==Up)//随机出新的方向并重新绘制坦克
{
Redraw();
if(Judge(hotpoint[0]-1,hotpoint[1],newD)==0)
{
hotpoint[0]--;
Direction=newD;
}
else
{
if(Judge(hotpoint[0],hotpoint[1],newD)==0)
Direction=newD;
}
}
else if(newD==Down)
{
Redraw();
if(Judge(hotpoint[0]+1,hotpoint[1],newD)==0)
{
hotpoint[0]++;
Direction=newD;
}
else
{
if(Judge(hotpoint[0],hotpoint[1],newD)==0)
Direction=newD;
本文档为【坦克大战,俄罗斯方块原码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。