#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#define FrameX 13
#define FrameY 3
#define Frame_height 20
#define Frame_width 18
int i,j,Temp,Temp1,Temp2;
int a[80][80]={0}; //0,1,2
int b[4];
struct Tetris{
int x;
int y;
int flag;
int next;
int speed;
int number;
int score;
int level;
};
HANDLE hOut;
/********函 数 声 明********/
void gotoxy(int x,int y); //光标移到指定位置
void DrawGameframe(); //绘制游戏边框
void Flag(struct Tetris *); //随机产生方块类型的序号
void MakeTetris(struct Tetris * ); //制作俄罗斯方块
void PrintTetris(struct Tetris *); //打印俄罗斯方块
void CleanTetris(struct Tetris *); //清除俄罗斯方块的痕迹
int ifMove(struct Tetris *); //判断是否能移动,能移动则返回1,否则不能移动
void Del_Fullline(struct Tetris *); //判断是否满行,并删除满行的俄罗斯方块
void Gameplay(); //开始游戏
void regulation(); //游戏规则
void explation(); //按键说明
void welcome(); //欢迎界面
void Replay(struct Tetris *); //重新开始游戏
void title(); //欢迎界面上方的标题
void flower(); //欢迎界面上的字符装饰花
void close(); //关闭游戏
int main();
/**
*控制文字颜色
*/
int color(int c)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
return 0;
}
/**
*控制文字显示位置
*/
void gotoxy(int x,int y){
COORD pos;
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
/**
*欢迎界面上的标题
*/
void title()
{
color(15);
gotoxy(24,3);
printf("趣 味 俄 罗 斯 方 块");
color(11);
gotoxy(18,5);
printf("■");
gotoxy(18,6);
printf("■■");
gotoxy(18,7);
printf("■");
color(14);
gotoxy(26,6);
printf("■■");
gotoxy(28,7);
printf("■■");
color(10);
gotoxy(36,6);
printf("■■");
gotoxy(36,7);
printf("■■");
color(13);
gotoxy(45,5);
printf("■");
gotoxy(45,6);
printf("■");
gotoxy(45,7);
printf("■");
gotoxy(45,8);
printf("■");
color(12);
gotoxy(58,6);
printf("■");
gotoxy(54,7);
printf("■■■");
}
/**
* 绘制字符花
*/
void flower()
{
gotoxy(66,10);
color(12);
printf("(_)");
color(14);
gotoxy(67,11);
printf("@");
color(12);
gotoxy(64,11);
printf("(_)");
color(12);
gotoxy(68,11);
printf("(_)");
gotoxy(66,12);
printf("(_)");
gotoxy(72,10);
color(5);
printf("(_)");
gotoxy(75,10);
color(14);
printf("@");
gotoxy(76,10);
color(5);
printf("(_)");
gotoxy(74,9);
color(5);
printf("(_)");
gotoxy(74,11);
color(5);
printf("(_)");
gotoxy(72,11);
color(14);
printf("/");
gotoxy(72,15);
printf("/");
gotoxy(70,12);
color(14);
printf("\\");
gotoxy(70,16);
printf("\\");
gotoxy(66,14);
color(9);
printf("(_)");
color(14);
gotoxy(67,15);
printf("@");
color(9);
gotoxy(64,15);
printf("(_)");
color(9);
gotoxy(68,15);
printf("(_)");
gotoxy(66,16);
printf("(_)");
gotoxy(72,14);
color(3);
printf("(_)");
gotoxy(75,14);
color(14);
printf("@");
gotoxy(76,14);
color(3);
printf("(_)");
gotoxy(74,13);
color(3);
printf("(_)");
gotoxy(74,15);
color(3);
printf("(_)");
gotoxy(71,12);
color(14);
printf("|");
gotoxy(71,13);
printf("|");
gotoxy(71,14);
printf("|");
gotoxy(71,15);
printf("|");
gotoxy(71,16);
printf("|");
gotoxy(71,17);
printf("|");
gotoxy(67,17);
color(10);
printf("\\\\\\\\"); //草地
gotoxy(72,17);
printf("///");
gotoxy(67,18);
color(2);
printf("^^^^^^^^");
gotoxy(68,20);
color(12);
printf("梅竞豪");
}
/**
*菜单选项
*/
void welcome()
{
int i,j=1;
color(14);
for(i = 9;i <= 20 ;i++){
for(j=15;j <= 60;j++){
gotoxy(j,i);
if(i == 9 || i == 20)
printf("=");
else if(j == 15 || j == 59)
printf("||");
}
}
color(12);
gotoxy(25,12);
printf("1.开始游戏");
gotoxy(40,12);
printf("2.按键说明");
gotoxy(25,17);
printf("3.游戏规则");
gotoxy(40,17);
printf("4.退出");
gotoxy(21,22);
color(3);
printf("请选择[1 2 3 4]: [ ]\b\b");
color(14);
int n;
scanf("%d",&n);
switch(n)
{
case 1:
system("cls"); //清屏
DrawGameframe();
Gameplay();
break;
case 2:
explation();
break;
case 3:
regulation();
break;
case 4:
close();
break;
}
}
/**
*制作游戏窗口
*/
void DrawGameframe()
{
gotoxy(FrameX+Frame_width-7,FrameY-2);
color(11);
printf("趣味俄罗斯方块");
color(12);
gotoxy(FrameX,FrameY);
printf("┏") ;
gotoxy(FrameX+2*Frame_width-2,FrameY);
printf("┓");
gotoxy(FrameX,FrameY+Frame_height);
printf("┗") ;
gotoxy(FrameX+2*Frame_width-2,FrameY+Frame_height);
printf("┛");
//打印上横框
for(i=2;i<2*Frame_width-2;i+=2){
gotoxy(FrameX+i,FrameY);
printf("━");
}
//下横框
for(i=2;i<2*Frame_width-2;i+=2){
gotoxy(FrameX+i,FrameY+Frame_height);
printf("━");
a[FrameX+i][FrameY+Frame_height] = 2;
}
//左竖框
for(i=1;i<Frame_height;i++){
gotoxy(FrameX,FrameY+i);
printf("┃");
a[FrameX][FrameY+i] = 2;
}
//右竖框
for(i=1;i<Frame_height;i++){
gotoxy(FrameX+2*Frame_width-2,FrameY+i);
printf("┃");
C语言实现俄罗斯方块小游戏(简陋版_小白所写)
最新推荐文章于 2025-05-28 08:27:30 发布