资源简介
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语言编译器源代码及测试代码
相关资源
- 俄罗斯方块游戏源码(Tetris)
- 俄罗斯方块(c++控制台代码)
- 俄罗斯方块.cpp
- opencv版俄罗斯方块源码
- 俄罗斯方块源码用VC开发
- C语言版俄罗斯方块基于EASYX库
- VC++ Win32俄罗斯方块游戏源码(新)
- C++图形系统实现俄罗斯方块小游戏
- c++ 俄罗斯方块( + 文档)
- 用C++使用SDL库编写的俄罗斯方块游戏
- 一个控制台俄罗斯方块C++源代码及可
- 基于MFC的俄罗斯方块游戏
- 俄罗斯方块游戏exe程序和所有代码资
- 功能完善的俄罗斯方块程序(C语言编
- MFC俄罗斯方块源码
- 俄罗斯方块C语言实现,用到了C语言的
- 基于MFC的VC++俄罗斯方块程序源代码
- 自己用C语言写的俄罗斯方块游戏——
- STM32实现俄罗斯方块游戏C语言
- 手把手教你用vc6 c++ 做俄罗斯方块小游
- MFC 版俄罗斯方块
- 毕业设计-C++俄罗斯方块
- vc6.0的MFC实现简单的俄罗斯方块小游戏
- 俄罗斯方块(基于VC6.0单文档)
- MFC俄罗斯方块及源码
- 小程序 俄罗斯方块
- 最简单的C语言俄罗斯方块
- c语言实现俄罗斯方块
- VS2013写的简单小游戏俄罗斯方块
- 俄罗斯方块游戏设计C++课程设计报告
川公网安备 51152502000135号
评论
共有 条评论