c语言 清屏函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 清屏函数相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<conio.h>
void main()
char c;
printf("asdhui");
printf("asdhui");
printf("asdhui");
printf("Y/N");
scanf("%d",&c);
if(c=='y' || c=='Y')
clrscr();
那为高手告诉我为什么会错啊?
怎么改就可以清屏啊
使用系统(CLS);头文件stdlib的简单示例。h #包括< stdio。h > #包含< stdlib。h > int main () printf ("Hello World! "\\ n”);系统(“暂停”);系统(CLS);系统(“暂停”);返回0;。
clrscr函数是C语言的清除函数,它清除屏幕上的输出,clrscr是clear screen的缩写。Clrscr不是C语言的标准库函数,而是TC平台特有的函数,其他编译器无法使用。
扩展资料:
在C语言中,需要在代码的开头定义变量,在代码的开头不允许使用表达式。因此,不允许将调平函数放在它的前面。
使用系统(CLS);可以达到画面清除的效果,在DOS画面中。系统功能已经包含在标准C库中,系统调用是通过命令进行的。函数原型:int system (char * command);参数:字符类型的命令函数:发出DOS命令。
实例:#include #include int main(void)printf("Hello World!\\n");system("PAUSE");//系统PAUSEsystem("CLS");//清屏system("PAUSE");//系统PAUSEreturn 0;。
参考资料:
百度百科-C语音
清屏函数:system(“cls”);
在TurboC中,可以调用conio.h头文件中的clrscr()函数来清屏。
#include<stdlib.h>
voidmain()
system("cls");
扩展资料
bottomscreenclear(自下清屏)
voiddcls(intx1,intx2,inty1,inty2)
intt,s,j,i;
t=s=(y1+y2)/2;
for(j=x2;j>x1;j--)
for(i=y1;i<y2;i++)
goto_xy(j,i);
putchar('');
delay(10);
参考技术B有人问:如何才能只清除一行,或是指定行?
于是搜呀搜呀~找到了这样的一个代码(关键部分):
#include <stdio.h>
#include <windows.h>
void GoToXY(int x, int y);
void main()
int x,y;
printf("请输入光标位置(x,y)用逗号隔开/n");
scanf("%d,%d",&x,&y);
GoToXY(x,y);
printf("x=%d,y=%d",x,y);
scanf("%d",&x);
void GoToXY(int x, int y)
COORD pos = x,y; //设置光标位置
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos); //两个参数分别是指定哪个窗体,什么位置?
那个如何清除指定的行的字符呢?
那就得用“覆盖法”了,就是让光标到那一行的行头,让后用一个循环输入指定次数的空格就行了。
扩展资料:
bottomscreenclear(自下清屏)
voiddcls(intx1,intx2,inty1,inty2)
intt,s,j,i;
t=s=(y1+y2)/2;
for(j=x2;j>x1;j--)
for(i=y1;i<y2;i++)
goto_xy(j,i);
putchar('');
delay(10);
参考技术C用 system("CLS");头文件 stdlib.h简单例子#include<stdio.h>#include<stdlib.h>
int main()printf("Hello World!\\n");system("PAUSE");system("CLS");system("PAUSE");return 0;
clrscr函数为C语言的清屏函数,功能为清除屏幕上的输出,clrscr为clear screen的简写。clrscr并不是C语言的标准库函数,而是TC平台特有的函数,在其它编译器中无法使用。
拓展资料:
在C语言中,要求必须在代码的开始部分定义变量,再次之前不允许有表达式,因此如果先把清平函数放前面,是不允许的。
用 system("CLS");可以达到清屏的效果,在dos屏中。system函数已经被收录在标准c库中,通过命令进行系统调用。函数原型:int system(char *command);参数: 字符类型的command
功 能: 发出一个DOS命令。
实例:#include #include int main(void)printf("Hello World!\\n");system("PAUSE");//系统PAUSEsystem("CLS");//清屏system("PAUSE");//系统PAUSEreturn 0;
参考技术D#include <stdio.h>
#include <windows.h>
printf("请输入光标位置(x,y)用逗号隔开/n");
scanf("%d,%d",&x,&y);
GoToXY(x,y);
printf("x=%d,y=%d",x,y);
scanf("%d",&x);
void GoToXY(int x, int y)
COORD pos = x,y; //设置光标位置
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos);
函数说明
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。
如果fork()失败 返回-1:出现错误
如果exec()失败,表示不能执行Shell,返回值相当于Shell执行了exit(127)
如果执行成功则返回子Shell的终止状态
以上内容参考:百度百科-system
C语言飞机游戏
目录
一、前言
[设计难度 : ★☆☆☆☆
[参考书籍:《C语言课程设计与游戏开发实践教程》
[主要涉及知识:函数封装 + 循环判断语句
[程序运行效果图:
[主要的游戏功能:
- 通过按键’w’,‘s’,‘a’,'d’分别实现飞机的上下左右移动
- 按空格键发射子弹
- 按ESC实现游戏暂停
- 按q键返回菜单界面
- 实现子弹和敌机位置的自动更新
- 敌机的生成速度和下落速度随分数的增加而变快
- 实时打印得分和生命值。生命值为0时游戏结束
以下为飞机游戏全部的代码,大家可以直接拷贝运行:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#define height 27 //设置游戏边界
#define width 50
#define enemy_max 5
enum Option //枚举增加代码可读性
EXIT,
PLAY,
GUIDE,
;
enum Condition //表示游戏幕布上的情况
backspace,
enemy,
bullet,
;
int canvas[height][width]; //游戏幕布存储对应的信息
int score;
int x, y; //飞机头部坐标
int Std_Speed; //敌机标准下落速度
int Std_Time; //敌机生成的标准速度
int HP; //玩家生命值
int enemy_num;
int times;
void gotoxy(int x, int y) //清屏函数
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
void HideCursor() //光标隐藏函数
CONSOLE_CURSOR_INFO cursor_info = 1, 0 ;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
void Initgame()
for (int i = 0; i < height; i++)
for (int j = 0; j < width; j++) //将幕布上先初始化为空格
canvas[i][j] = backspace;
HP = 3;
score = 0;
x = width / 2; //初始化飞机位置
y = height / 2;
enemy_num = 0;
Std_Speed = 60;
Std_Time = 60;
void show()
gotoxy(0, 0);
for (int i = 0; i < height; i++)
for (int j = 0; j < width; j++)
if (i == y && j == x) //打印飞机
printf("*");
else if (i == y + 1 && j == x - 2)
printf("*****");
j += 4;
else if (i == y + 2 && j == x - 1)
printf("* *");
j += 2;
else if (canvas[i][j] == bullet) // 打印子弹
printf("|");
else if (canvas[i][j] == enemy)
printf("@");
else
printf(" ");
printf("|\\n"); //打印游戏边框
for (int j = 0; j < width; j++) //打印游戏边框
printf("-");
printf("\\n[得分:>%d\\n", score); //打印游戏分数和血量
printf("[生命值:>%d\\n", HP);
int updateWithinput()
if (_kbhit())
int input = _getch();
switch (input)
case 'w': if (y > 0) //防止飞机飞出游戏边界
y--;
break;
case 's': if (y < height - 3)
y++;
break;
case 'a': if (x > 2)
x--;
break;
case 'd': if (x < width - 3)
x++;
break;
case 27: system("pause"); break; //ESC的ascll码值为27
case ' ': if (y > 0)
canvas[y - 1][x] = bullet;
break;
case 'q': return 1; //退出游戏
return 0;
int enemy_update()
static int enemy_speed = 0;
static int enemy_time = 0;
int flag = 0;
if (enemy_speed < Std_Speed) //依靠循环来减速
enemy_speed++;
if (enemy_time < Std_Time)
enemy_time++;
if (enemy_num < enemy_max && enemy_time >= Std_Time)
int i, j;
do
i = rand() % (height / 5);
j = rand() % (width - 4) + 2; //j的范围:[2, width - 3]
while (canvas[i][j] != backspace);
canvas[i][j] = enemy;
enemy_num++;
enemy_time = 0;
if (enemy_speed >= Std_Speed)
flag = 1;
enemy_speed = 0;
for (int i = height - 1; i >= 0; i--)
for (int j = width - 1; j >= 0; j--)
if (canvas[i][j] == enemy) //遇到敌机的情况
if (i == height - 1) //敌机飞到边界
score--;
HP--;
if (HP == 0)
return 1;
enemy_num--;
canvas[i][j] = backspace;
else if (i < height - 1 && canvas[i + 1][j] == bullet)//检测是否被子弹击中
score++;
printf("\\a");
enemy_num--;
if (score % 5 == 0 && Std_Speed >= 12) //分数到达一定程度后下落加快,生成加快
Std_Speed -= 3; //下落加快
Std_Time -= 3; //生成速度加快
canvas[i][j] = backspace;
else if (flag) //flag为1更新敌机位置
canvas[i + 1][j] = enemy;
canvas[i][j] = backspace;
return 0;
void bullet_update()
for (int i = 0; i < height; i++) //控制子弹的移动
for (int j = 0; j < width; j++)
if (canvas[i][j] == bullet)
if (i > 0 && canvas[i - 1][j] == enemy)
score++;
printf("\\a");
enemy_num--;
if (score % 5 == 0 && Std_Speed >= 6) //分数到达一定程度后下落加快,生成加快
Std_Speed -= 3; //下落加快
Std_Time -= 3; //生成速度加快
canvas[i - 1][j] = bullet;
else if (i > 0)
canvas[i - 1][j] = bullet;
canvas[i][j] = backspace;
void gamebody()
system("cls");
Initgame();
HideCursor();
srand((unsigned int)time(NULL));
while (1)
show();
bullet_update();
if (updateWithinput() || enemy_update())
show();
printf("[本次游戏结束:>");
system("pause");
break;
void menu()
printf("*****************\\n");
printf("** 飞机游戏 **\\n");
printf("**-------------**\\n");
printf("** 1.PLAY **\\n");
printf("** 2.GUIDE **\\n");
printf("** 0.EXIT **\\n");
printf("*****************\\n");
void guide()
printf("******************\\n");
printf("** 游戏操作指南 **\\n");
printf("**--------------**\\n");
printf("** w->上移 **\\n");
printf("** s->下移 **\\n");
printf("** a->左移 **\\n");
printf("** d->右移 **\\n");
printf("** q->返回 **\\n");
printf("** ESC->暂停 **\\n");
printf("** 空格->射击 **\\n");
printf("******************\\n\\n\\n");
int main()
int input = 0;
do
menu();
printf("[请选择:>");
scanf("%d", &input);
switch (input)
case PLAY: gamebody(); break;
case GUIDE: guide(); break;
case EXIT: printf("成功退出游戏!\\n"); break;
default: printf("输入错误,请重新选择\\n");
while (input);
return 0;
如果觉得还挺有意思的,那就继续保持着轻松的心情看下去吧!
二、从设计初始菜单界面开始
一个基本的游戏初始选择框架:
int main()
int input = 0;
do
menu();
printf("[请选择:>");
scanf("%d", &input);
switch (input)
case xxx:
case xxx:
case xxx:
default:
while (input);
return 0;
我们根据游戏所包含的功能设计好相应的menu选项以及其对应的case事件即可。作为我们飞机游戏的第一个简单版本,我们先不考虑其他的模式和功能,仅包含PLAY
(游戏)功能、GUIDE
(操作说明)、EXIT
(退出游戏)三种功能。根据这个思路,我们写下这样的menu函数
void menu()
printf("*****************\\n");
printf("** 飞机游戏 **\\n");
printf("**-------------**\\n");
printf("** 1.PLAY **\\n");
printf("** 2.GUIDE **\\n");
printf("** 0.EXIT **\\n");
printf("*****************\\n");
为了增加代码的可读性
,我们在头文件处创建枚举变量。
enum Option //枚举增加代码可读性
EXIT, // printf("%d", EXIT);的结果为 0
PLAY, // printf("%d", PLAY);的结果为 1
GUIDE, // printf("%d", GUIDE);的结果为 2
;
每个枚举常量都是有值的,第一个枚举成员的值默认为0(不人为修改的话),之后的随前一个递增。这恰好与我们的menu中功能序号相对应,于是我们可以用枚举变量作为case的整形常量表达语句,最终写出的主函数是这样的:
int main()
int input = 0;
srand((unsigned int)time(NULL)); //初始化rand函数,只需要初始化一次即可,所以放在主函数内
do
menu();
printf("[请选择:>");
scanf("%d", &input);
switch (input)
case PLAY: gamebody(); break;
case GUIDE: guide(); break;
case EXIT: printf("成功退出游戏!\\n"); break;
default: printf("输入错误,请重新选择\\n");
while (input);
return 0;
三、游戏操作指南——guide函数
说明按键对应的功能,很简单就不赘述了
void guide()
printf("******************\\n");
printf("** 游戏操作指南 **\\n");
printf("**--------------**\\n");
printf("** w->上移 **\\n");
printf("** s->下移 **\\n");
printf("** a->左移 **\\n");
printf("** d->右移 **\\n");
printf("** q->返回 **\\n");
printf("** ESC->暂停 **\\n");
printf("** 空格->射击 **\\n");
printf("******************\\n\\n\\n");
四、游戏的主体gamebody()
①简化通用的游戏框架
void gamebody()
Initgame(); //初始化游戏函数
while(1)
show(); //展示函数
updateWithInput(); //与用户输入有关的更新,
updateWithoutInput();//与用户输入无关的更新,如子弹、敌机的移动
以这个游戏框架为基础,我们建立起我们的设计逻辑
②头文件一览
在正式介绍gamebody函数之前,我们先看看定义在头文件的全局变量以及他们的作用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <coni以上是关于c语言 清屏函数的主要内容,如果未能解决你的问题,请参考以下文章