C语言实现俄罗斯方块小游戏(简陋版_小白所写)

#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("┃");
    
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值