资源简介
C语言编的俄罗斯方块,也可以在编程之余进行悠闲娱乐。有详细的注释
代码片段和文件信息
#include
#include
#include
#include
#include //包含memset的头文件
struct XY{
int x;
int y;//位置坐标
struct XY *next;
}*head*q;
int box[24][16]={0};//全部格子状态
int score=0;//得分
int sleeptime=30;//运行间隔
int rank=15;//速度等级
int shape;//形状,共七种
int nextshape;//下一个形状
int end=0;//直接退出游戏
int turn;//旋转状态
int deletetimes=0;//消除行
void gotoxy(int xint y);//定位
void map();//绘制地图
void startgame();//开始
void newshape();//新图形
void gameover();//游戏结束
void fall();//下落
void shapestop();//方块停止运动,释放内存,
void del();//消除
void nextone();//下一个
void Pause();//暂停
void change(int style);//变换
void spin();//旋转
void left();//左
void right();//右
void down();//直下
bool newgames();//新一局游戏
int main()
{
system(“mode con: cols=80 lines=30“);//初始化窗口大小
do{
memset(box 0 sizeof(box));//将box元素全置为0
end=0;
score=0;
sleeptime=30;
deletetimes=0;
rank=15; //全局变量全部初始化 没初始化的时候ESC之后重新开始无效
time_t t;
srand((unsigned int)time(&t));//随机数种子生成
head=q=NULL;//初始化指针
map();
gotoxy(3816);
system(“pause“);//提示按键之后才开始游戏
gotoxy(3816);
printf(“ “);
startgame();
} while (newgames());//用户选择是否循环新游戏
return 0;
}
void gotoxy(int x int y) //定位
{
COORD pos;
pos.X = x ;
pos.Y = y ;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE)pos);
}
void map()//创建地图
{
int i;
for(i=0;i<36;i+=2)//打印上下边框
{
gotoxy(i0);
printf(“〓“);
gotoxy(i25);
printf(“〓“);
}
for(i=1;i<25;i++)//打印左右边框
{
gotoxy(0i);
printf(“▓“);
gotoxy(34i);
printf(“▓“);
}
gotoxy(441);
printf(“俄罗斯方块“);
gotoxy(403);
printf(“下一个:“);
gotoxy(3810);
printf(“请用 ↑键旋转方向“);
gotoxy(3811);
printf(“请用 ↓ ← →键控制方块移动“);
gotoxy(3812);
printf(“请按 空格 暂停/继续 游戏“);
gotoxy(3813);
printf(“请按ESC键退出游戏“);
gotoxy(3815);
printf(“制作: “);
}
void startgame()//开始游戏 操控
{
int number=0;
int s;//第0行
int mark=0;//标记
shape=rand()%7;
turn=0;
newshape();
while(1)
{
if(mark==0)
{
nextshape=rand()%7;
nextone();
mark=1;
}
rank=15-deletetimes/5;
if(rank<=1)
rank=1;
gotoxy(3817);
printf(“速度:%d“16-rank);
gotoxy(3819);
printf(“分数:%d“score);
if(head==NULL)//方块被释放
{
shape=nextshape;
turn=0;
newshape();
mark=0;
}
for(s=0;s<16;s++)
if(box[0][s]==1)//到顶,游戏结束
{
Sleep(1500);
gameover();
return;
}
if(GetAsyncKeyState(VK_UP))//能否旋转或移动的判断在函数里实现
change(90);//从startgame挪到此函数实现了在最底行可进行一次操作
else if(GetAsyncKeyState(VK_LEFT))
change(-1);
else if(GetAsyncKeyState(VK_RIGHT))
change(1);
else if(GetAsyncKeyState(VK_SPACE))
Pause();
else if(GetAsyncKeyState(VK_ESCAPE))
end=1;
shapestop();
if(GetAsyncKeyState(VK_DOWN))
c
- 上一篇:LEX实现一个C语言子集的词法分析器
- 下一篇:PL/0语言编译器源代码及测试代码
相关资源
- C++ QT 俄罗斯方块源码
- mfc可视化程序设计大作业俄罗斯方块
- 采用C++、curses、多线程实现的俄罗斯
- C++版本俄罗斯方块代码
- 俄罗斯方块C语言报告
- linux下c语言写的俄罗斯方块
- MFC俄罗斯方块设计报告
- 俄罗斯方块-毕业设计开题报告
- 俄罗斯方块源代码(C++源代码)
- C语言课程设计 俄罗斯方块源程序
- 俄罗斯方块c++源码
- 控制台俄罗斯方块C++源码
- C语言制作的双人俄罗斯方块
- 俄罗斯方块(黑白版)
- linux下C语言俄罗斯方块代码
- VC++俄罗斯方块完整源码
- linux环境下C语言实现的俄罗斯方块
- qt c++ 开发的俄罗斯方块
- C语言+SDL俄罗斯方块
- 详细vc++写的俄罗斯方块
- C++Qt5俄罗斯方块.7z
- 俄罗斯方块源码C++
- linux下C++俄罗斯方块源码免费
- 用C语言写的一个俄罗斯方块程序
- C++实战源码-俄罗斯方块
- c语言俄罗斯方块.zip
- c语言Turbo C下写的俄罗斯方块.zip
- 利用EGE图形库做好的俄罗斯方块
- 俄罗斯方块(c++代码)
- 俄罗斯方块(小游戏源码)
评论
共有 条评论