VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 518|回复: 4

[讨论] C语言做的一个俄罗斯方块控制台应用程序,不能清屏开始游戏求大神帮忙

[复制链接]
66_avatar_middle
最佳答案
0 
在线会员 发表于 2019-11-17 22:07:02 | 显示全部楼层 |阅读模式
自己用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();

       
}
QQ图片20191117215546.png
9.png

评分

参与人数 1驿站币 +1 收起 理由
13_avatar_small gdfyhao + 1 很给力!

查看全部评分





上一篇:VC文件瘦身批处理
下一篇:今日一贴。完整端的文字病毒,新手观摩,
15_avatar_middle
最佳答案
6 
online_vip 发表于 2019-11-19 01:47:18 | 显示全部楼层
ly1599285982 发表于 2019-11-17 22:09
DrwaGameframe();函数里的功能不能被正常显示,这是怎么回事,求大神帮忙

scanf_s("/d", &n);改为 scanf_s("%d", &n)
66_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-11-17 22:09:31 | 显示全部楼层
DrwaGameframe();函数里的功能不能被正常显示,这是怎么回事,求大神帮忙C语言做的一个俄罗斯方块控制台应用程序,不能清屏开始游戏求大神帮忙
83_avatar_middle
最佳答案
0 
在线会员 发表于 2020-2-17 18:52:00 | 显示全部楼层
为你点赞。。。
60_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-16 16:52:40 | 显示全部楼层
学习!学习
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-27 01:41

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表