首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

传说中的计时器,该怎么处理

2012-09-13 
传说中的计时器请教各位大神,我贪吃蛇的小程序,用了一个计时器,让他一直按照一定速度前进,但是现在要怎么

传说中的计时器
请教各位大神,我贪吃蛇的小程序,用了一个计时器,让他一直按照一定速度前进,但是现在要怎么样改变计时器的时间间隔,也就是能不能让他运动的快一点啊,我知道有个sleep函数,但是无论我把s小写还是大写,编译器都是报错,头文件也都包含了,但是就是不对,还有没有什么比较简单的方法啊?或者有什么办法让sleep函数正确??


[解决办法]
额,sleep报错?不可能的吧。
void Sleep(int ms)
include: <windows.h>
include: <winbase.h>
[解决办法]
前不久些的一个扫雷程序里面含有sleep()函数,可以参考一下。
函数原型
VOID
WINAPI
Sleep(
__in DWORD dwMilliseconds
);
在<winbase里面>
文件包含下<windows.h>就可以了
#include<iostream>
#include<stdio.h>
#include<stdlib.h> 
#include<stack>
//#include<thread>
#include<windows.h>
#include<time.h>
using namespace std;
////////////////////////////////////////////////////
//全局变量的定义
////////////////////////////////////////////////////
const char outstr[11][4]={"●","○","¤"};
int a[15][15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int b[15][15]={0};
const int MaxNum=10;
int Num=20;
class PoSition
{
public:
int row;
int col;
public:
PoSition(int r,int c)
{
row=r;
col=c;
}
PoSition()
{

}
~PoSition(){}
};
stack<PoSition> psStack;
/////////////////////////////////////////////////
//函数声明部分
////////////////////////////////////////////////
void Findwin();
bool Panduan(PoSition c);

////////////////////////////////////////////////
//函数的定义部分
////////////////////////////////////////////////
void Throwwin()
{
system("cls");
system("mode con cols=30 lines=10");
system("color 5f");
cout<<"在不?猪. 哈哈!请扔雷:";
srand(time(NULL));//初始化随机种子为当前系统时间
int count=0;//雷的数量
cin>>Num;
cout<<"你扔雷的数量为:"<<Num<<endl;
if(Num<30)
{
cout<<"你是个扫雷菜鸟,鄙视你!"<<endl;
//Sleep(2000);
}
else if(Num>=30&&Num<=100)
{
cout<<"您是一位扫雷高手"<<endl;
//Sleep(2000);
}
else
{
cout<<"你是个扫雷专家,佩服佩服!"<<endl;
//Sleep(2000);
}
system("cls");
cout<<"2秒之后进入游戏...^&^"<<endl;
Sleep(2000);
while(count<Num)
{
int i=(int)(rand())%13+1;
int j=(int)(rand())%13+1;
b[i][j]=2;
count++;
}
}

void Welcome()
{
system ("color 5f");
system ("mode con cols=20 lines=10");
system("title 熊猫洗剑");
//cout<<"Welcome To"<<endl;
cout<<"Start input 1"<<endl;
cout<<"Eixt input 2 "<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"Loding..."<<endl;
Sleep(2000);
//Throwwin();//玩家布雷函数
//Findwin();
break;
}


case 2:
{
exit(0);
break;
}

}
}
void Fire()
{
system("cls");
system("color 5f");
printf(" **********************\n");
printf("***********欢迎您玩控制台扫雷游戏!************\n");
printf(" **********************\n");
int a[15][15]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
cout<<" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4"<<endl;
for(int i=0;i<=14;i++)
{
if(i!=0)
cout<<endl;
cout<<" ";
cout<<i%10;
for(int j=0;j<=14;j++)
{
cout<<outstr[b[i][j]];
}
}
cout<<endl;
cout<<"更多程序联系迟长峰或联系QQ:892850447\n";
cout<<"GAME OVER!"<<endl; 
cout<<endl;
return;
}
void ClsInsist()
{
system("cls");
system ("mode con cols=50 lines=25");
system ("color 5f");
system ("title 扫雷!");
printf(" **********************\n");
printf("***********欢迎您玩熊猫洗剑版扫雷游戏!************\n");
printf(" **********************\n");
cout<<" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4"<<endl;
for(int i=0;i<=14;i++)
{
if(i!=0)
cout<<endl;
cout<<" ";
cout<<i%10;
for(int j=0;j<=14;j++)
{
cout<<outstr[a[i][j]];
}
}
cout<<endl;
cout<<"作者QQ:892850447\n";
cout<<"请输入您要下的棋子 行\\列 用空格隔开:";
cout<<endl;
return;
}
void Findwin()
{

//system("mode con cols=80 lines=20");
ClsInsist();
int row,col,number=0;//简单起见,找到number个非雷点即获胜
while(number>-100)//(number<Num)
{
cout<<"请输入你认为无雷的坐标(1<=x<=13&&1<=y<=13按Enter键结束):"<<endl;
cin>>row>>col;
PoSition c(row,col);
if(b[c.row][c.col]==2)
{
Fire();//爆炸函数
getchar();
return;
}
Panduan(c);
while(!psStack.empty())//退出条件栈空
{
c=psStack.top();
psStack.pop();
Panduan(c);
}
//number++;
ClsInsist();
}
}

bool Panduan(PoSition c)
{
int i;
bool panduan=true;
PoSition position[8];
position[0].row=c.row;position[0].col=c.col-1;//北
position[1].row=c.row+1;position[1].col=c.col-1;//东北
position[2].row=c.row+1;position[2].col=c.col;//东
position[3].row=c.row+1;position[3].col=c.col+1;//东南
position[4].row=c.row;position[4].col=c.col+1;//南
position[5].row=c.row-1;position[5].col=c.col+1;//西南
position[6].row=c.row-1;position[6].col=c.col;//西
position[7].row=c.row-1;position[7].col=c.col-1;//西北
for(i=0;i<8;i++)//判断周围是否存在雷
{
if(b[position[i].row][position[i].col]==2)
{


//a[c.row][c.col]=2;
panduan=false;
break;
}
}
a[c.row][c.col]=1;
if(panduan)
{
for(i=0;i<8;i++)//将当前结点连通的八个定点入栈
{
if(a[position[i].row][position[i].col]==1)
continue;
psStack.push(position[i]);
a[position[i].row][position[i].col]=1;
}
return true;
}
else
return false;
}
void main()
{
Welcome();//进入游戏界面,初始化游戏。
Throwwin();//扫雷函数,扫雷的日子好难受!
//system ("cls");
//ClsInsist();
//system("cls");
Findwin();
}

热点排行