|
自己用C语言做一个俄罗斯方块的控制台应用,但是写到开始游戏的那个函数后,单击1后 system("cls") 不能正常清屏和显示游戏界面而是直接退出,在选择函数里面加system("pause")也没用,求大神帮忙看一下是哪里出了问题,代码如下
#include <stdio.h>
#include<stdlib.h>
#include"windows.h"
#include<time.h>
#include<conio.h>
int i, j, Temp, Temp1, Temp2;
int b[4];
int a[80][80] = { 0 };
struct Tetris
{
int x;
int y;
int flag;
int next;
int speed;
int number;
int score;
int level;
};
HANDLE hOut;
int color(int c);
void gotoxy(int x, int y);
void DrwaGameframe();
void Flag(struct Tetris*);
void MakeTetris(struct Tetris*);
void PrintTetris(struct Tetris*);
void CleanTetris(struct Tetris*);
int ifMove(struct Tetris*);
void Del_Fulline(struct Tetris*);
void Gameplay();
void regulation();
void explation();
void welcom();
void Replay();
void title();
void flower();
void close();
#define FrameX 13
#define FrameY 3
#define Frame_height 20
#define Frame_width 18
int color(int c)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);//更改颜色
return 0;
//SetConsoleTextAttribute是设置控制台窗口字体颜色和背景色函数,其原形是:
//BOOL SetConsoleTextAttribute(HANDLE consolehwnd,WORD wAttributes);
}
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(30, 3);
printf("趣 味 俄 罗 斯 方 块\n");
color(11);
gotoxy(19, 5);
printf("■"); //■
gotoxy(19, 6);
printf("■■"); //■■
gotoxy(19, 7);
printf("■"); //■
color(14);//黄色
gotoxy(27, 6);
printf("■■");//■■
gotoxy(29, 7);
printf("■■");// ■■
color(10);//绿色
gotoxy(37, 6);
printf("■■");
gotoxy(37, 7);
printf("■■");
color(13);
gotoxy(46, 5);
printf("■");
gotoxy(46, 6);
printf("■");
gotoxy(46, 7);
printf("■");
gotoxy(46, 8);
printf("■");
color(12);
gotoxy(57, 6);
printf("■");
gotoxy(53, 7);
printf("■■■");
gotoxy(4, 9);
}
void flower()
{
gotoxy(66, 11);
color(12);
printf("(_)");
gotoxy(64, 12);
printf("(_)");
gotoxy(68, 12);
printf("(_)");
gotoxy(66, 13);
printf("(_)");
gotoxy(67, 12);
color(6);
printf("@");
gotoxy(72, 10);
color(13);
printf("(_)");
gotoxy(76, 10);
printf("(_)");
gotoxy(74, 9);
printf("(_)");
gotoxy(74, 11);
printf("(_)");
gotoxy(75, 10);
color(6);
printf("@");
gotoxy(71, 12);
printf("|");
gotoxy(72, 11);
printf("/");
gotoxy(70, 13);
printf("\\|");
gotoxy(71, 14);
printf("\|/");
gotoxy(70, 15);
printf("\\|");
gotoxy(71, 16);
printf("|/");
gotoxy(71, 17);
printf("|");
gotoxy(67, 17);
color(10);
printf("\\\\\\\\");
gotoxy(73, 17);
printf("///");
gotoxy(67, 18);
color(2);
printf("^^^^^^^^^");
gotoxy(65, 19);
color(5);
printf("晓 玲 科 技");
gotoxy(68, 21);
printf("宇航");
gotoxy(2, 22);
}
void welcom()
{
int n, 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);
scanf_s("/d", &n);
switch (n)
{
case 1:
system("cls");
DrwaGameframe();
break;
case 2:
break;
case 3:
break;
case 4:
break;
}
}
void DrwaGameframe()
{
gotoxy(FrameX + Frame_width - 7, FrameY - 2);
color(11);
printf("趣味俄罗斯方块");
gotoxy(FrameX + 2 * Frame_width + 3, FrameY + 7);
color(2);
printf("**********");
gotoxy(FrameX + 2 * Frame_width + 13, FrameY + 7);
color(3);
printf("下个出现方块");
gotoxy(FrameX + 2 * Frame_width + 3, FrameY + 13);
color(2);
printf("**********");
gotoxy(FrameX + 2 * Frame_width + 3, FrameY + 17);
color(14);
printf("↑键:旋转");
gotoxy(FrameX + 2 * Frame_width + 3, FrameY + 19);
printf("空格:暂停游戏");
gotoxy(FrameX + 2 * Frame_width + 3, FrameY + 15);
printf("Esc:退出游戏");
gotoxy(FrameX, FrameY);
color(12);
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("╝");
a[FrameX][FrameY + Frame_height] = 2;
a[FrameX + 2 * Frame_width - 2][FrameY + Frame_height] = 2;
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("║");
a[FrameX + 2 * Frame_width - 2][FrameY + i] = 2;
}
}
int main()
{
title();
flower();
welcom();
} |
-
-
评分
-
查看全部评分
上一篇: VC文件瘦身批处理下一篇: 今日一贴。完整端的文字病毒,新手观摩,
|