900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言+Linux中 编写打字游戏

C语言+Linux中 编写打字游戏

时间:2023-01-03 06:19:05

相关推荐

C语言+Linux中 编写打字游戏

#include <stdio.h>#include<string.h>#include <unistd.h> //头文件/*char mygetch() //功能函数的定义{struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;}//定义处因为在整个文件的最上面,因此下面的代码中调用这个函数将不用声明*///Linux下键盘输入函数相当于scanf;void fun();int main(int argc, char const *argv[]){while(1){char h[21]="";//定义字符串srand(time(NULL));//获取当前的时间设置为随机种子printf("欢迎来到游戏\n");//mygetch();printf("按下1开始难度为容易的游戏\n");printf("按下2开始难度为中档的游戏\n");printf("按下3开始难度为难的游戏\n");int nandu;//nandu=mygetch();scanf("%d\n",&nandu);if(nandu== 1){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);//char c = b+ 'a';//由于b是0-25,加上a字符就变成了a-z//printf("%c\n", c);int i;for(i=0;i<20;++i){h[i]=rand()%26+'a';}printf("%s\n",h);}if(nandu== 2){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);int panduan;int i;for(i=0;i<20;++i){panduan=rand()%2;//0-1if(panduan==0){h[i]=rand()%26+'a';//a=z}elseh[i]=rand()%26+'A';//A=Z}printf("%s\n",h);}if(nandu== 3){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);int panduan;int i;for(i=0;i<20;++i){panduan=rand()%3;//0-2if(panduan==0){h[i]=rand()%26+'a';//a=z}if(panduan==1){h[i]=rand()%26+'A';//A=Z}elseh[i]=rand()%10+'0';}printf("%s\n",h);}int k = 0;//记录正确个数int s_time = 0,e_time = 0;int l;for (l = 0; l < 20; ++l){//获取键盘输入//char ch = mygetch();char ch;scanf("%c\n",&ch);//判断if (ch == h[l]){printf("%c", ch);//原样输出k++;}elseprintf("_");if (l == 0)s_time = time(NULL);}e_time = time(NULL);//当前的for循环结束后printf("当前游戏结束\n");printf("用时为%d秒\n", e_time - s_time);printf("正确个数%d\n", k);/*while(1){printf("请输入esc退出、空格继续\n");//char ch = mygetch();char sh;scanf("%c\n",&sh);if (sh == 27)//27为esc键的ASCII码{return 0;}else if (sh == 32)//32就是空格{//结束当前层循环break;}printf("请按照规则按下谢谢\n");}*///利用指针判断循环主函数fun();}return 0;}//子函数控制主函数循环void fun(){printf("请输入esc退出、空格继续\n");//char ch = mygetch();char sh;scanf("%c\n",&sh);if (sh == 27)//27为esc键的ASCII码{return 0;}else if (sh == 32)//32就是空格{//结束当前层循环return 1;}printf("请按照规则按下谢谢\n");}

或者用while来循环

#include <stdio.h>#include<string.h>#include <unistd.h> //头文件/*char mygetch() //功能函数的定义{struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;}//定义处因为在整个文件的最上面,因此下面的代码中调用这个函数将不用声明*///Linux下键盘输入函数相当于scanf;int main(int argc, char const *argv[]){while(1){char h[21]="";//定义字符串srand(time(NULL));//获取当前的时间设置为随机种子printf("欢迎来到游戏\n");//mygetch();printf("按下1开始难度为容易的游戏\n");printf("按下2开始难度为中档的游戏\n");printf("按下3开始难度为难的游戏\n");int nandu;//nandu=mygetch();scanf("%d\n",&nandu);if(nandu== 1){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);//char c = b+ 'a';//由于b是0-25,加上a字符就变成了a-z//printf("%c\n", c);int i;for(i=0;i<20;++i){h[i]=rand()%26+'a';}printf("%s\n",h);}if(nandu== 2){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);int panduan;int i;for(i=0;i<20;++i){panduan=rand()%2;//0-1if(panduan==0){h[i]=rand()%26+'a';//a=z}elseh[i]=rand()%26+'A';//A=Z}printf("%s\n",h);}if(nandu== 3){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);int panduan;int i;for(i=0;i<20;++i){panduan=rand()%3;//0-2if(panduan==0){h[i]=rand()%26+'a';//a=z}if(panduan==1){h[i]=rand()%26+'A';//A=Z}elseh[i]=rand()%10+'0';}printf("%s\n",h);}int k = 0;//记录正确个数int s_time = 0,e_time = 0;int l;for (l = 0; l < 20; ++l){//获取键盘输入//char ch = mygetch();char ch;scanf("%c\n",&ch);//判断if (ch == h[l]){printf("%c", ch);//原样输出k++;}elseprintf("_");if (l == 0)s_time = time(NULL);}e_time = time(NULL);//当前的for循环结束后printf("当前游戏结束\n");printf("用时为%d秒\n", e_time - s_time);printf("正确个数%d\n", k);while(1){printf("请输入esc退出、空格继续\n");//char ch = mygetch();char sh;scanf("%c\n",&sh);if (sh == 27)//27为esc键的ASCII码{return 0;}else if (sh == 32)//32就是空格{//结束当前层循环break;}printf("请按照规则按下谢谢\n");}}return 0;}

在Linux中编码:

用VMnat链接主机,代码如下:

虚拟机的状态:nat\桥接

将虚拟机设置为nat模式将虚拟机的网络设置IPV6设置为

IP:192.168.1.66

子网掩码:255.255.255.0

网关:192.168.1.254

DNS服务器:192.168.1.1

设置之后点击上下箭头(网络连接)连接刚刚创建的nat——显示nat已经连接成功就可以了

设置一下主机电脑的网络配置(虚拟网卡)

打开网络和共享中心

更改适配器选项,选择VM8,单击右键属性—ipv4

Samba服务器:Windows+r

在运行中输入\192.168.1.66,有个share文件夹,是虚拟机的共享文件夹。

输入用户名和密码就进入文件夹

打开Sublime Text3,打开share文件夹

在share文件新建一个zzuli文件夹,在Sublime Text3中打开zzuli文件夹。

我们使用Sublime Text3,zzuli中新建文件

,设置一个标题=zzuli.c(.c表明是c文件)。

代码如下:

#include <stdio.h>#include<string.h>#include <termios.h>#include <unistd.h> //头文件char mygetch() //功能函数的定义{struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;}//定义处因为在整个文件的最上面,因此下面的代码中调用这个函数将不用声明//Linux下键盘输入函数相当于scanf;int main(int argc, char const *argv[]){while(1){char h[21]="";//定义字符串srand(time(NULL));//获取当前的时间设置为随机种子printf("欢迎来到游戏\n");mygetch();printf("按下1开始难度为容易的游戏\n");printf("按下2开始难度为中档的游戏\n");printf("按下3开始难度为难的游戏\n");int nandu;nandu=mygetch();//scanf("%d\n",&nandu);if(nandu== '1'){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);//int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);//char c = b+ 'a';//由于b是0-25,加上a字符就变成了a-z//printf("%c\n", c);int i;for(i=0;i<20;++i){h[i]=rand()%26+'a';}printf("%s\n",h);}if(nandu== '2'){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);int panduan;int i;for(i=0;i<20;++i){panduan=rand()%2;//0-1if(panduan==0){h[i]=rand()%26+'a';//a=z}elseh[i]=rand()%26+'A';//A=Z}printf("%s\n",h);}if(nandu== '3'){// int a = rand();//rand表示生成随机数函数//printf("%d\n", a);// int b = a%26;//取余数一定小于本身 0-25//printf("%d\n", b);int panduan;int i;for(i=0;i<20;++i){panduan=rand()%3;//0-2if(panduan==0){h[i]=rand()%26+'a';//a=z}if(panduan==1){h[i]=rand()%26+'A';//A=Z}elseh[i]=rand()%10+'0';}printf("%s\n",h);}int k = 0;//记录正确个数int s_time = 0,e_time = 0;int l;for (l = 0; l < 20; ++l){//获取键盘输入char ch = mygetch();//char ch;//scanf("%c\n",&ch);//判断if (ch == h[l]){printf("%c", ch);//原样输出k++;}elseprintf("_");if (l == 0)s_time = time(NULL);}e_time = time(NULL);//当前的for循环结束后printf("当前游戏结束\n");printf("用时为%d秒\n", e_time - s_time);printf("正确个数%d\n", k);while(1){printf("请输入esc退出、空格继续\n");char sh = mygetch();//char sh;//scanf("%c\n",&sh);if (sh == 27)//27为esc键的ASCII码{return 0;}else if (sh == 32)//32就是空格{//结束当前层循环break;}printf("请按照规则按下谢谢\n");}}return 0;}

开发思维:(打字游戏)

先去玩这个游戏、写中文流程、写代码

需要着重掌握的内容:

C语言的灵活使用:

数据类型:(你需要什么就定义什么)

17677565621

char *a = “17677565621”;//指针,字符串是文字常量,文字常量区、可读不可写

char b[20] = “17677565621”;//字符数组

我们按照需求使用

int、char、char * [ ]

数组:(有固定个数、相同数据类型、连续排放)

数组的定义:

int a[10] ;//英文单词+[ ]结合表示数组,【】内的是数组的元素个数 最前面的是元素数据类型

数组、整型,读的时候从后往前读,整型数组,其本质就是数组(后面的)

什么叫做指针数组?数组,每个元素是指针

什么叫做数组指针?指针,就是数组的地址

数组名称的意义:

数组的名称表示数组的首地址,在数值上等于第零个元素的地址

数组名称+1跳过整个数组,数组第0个元素+1,跳过一个元素

char haha[10] = “”;//初始化的时候使用空的字符串

char xixi[ 5 ] = “haha”;//字符串最后一位是\0所以是5个元素

如果上面的写4,大多数不会出问题(系统),它默认给你扩了一位,但是给你用不属于你

【】内写大于等于4的都可以

指针:指针就是地址,在定义的时候有*,在使用的时候被&取地址

&和*:

int a = 10; intb = &a; int &c = a;//表示c是a的一个引用,也就是别名 printf("%d\n",b);//打印a本身的值

在使用的时候&表示取地址,在定义的时候表示引用

在使用的时候表示取内容,在定义的时候表示指针

&和的意义:

&在使用时候表示取地址,这个整体会在原有的数据类型基础上进行+*

在使用时候表示取内容,这个整体会在原有的数据类型基础上进行-

intb = &a;//a–int,&a—intprintf("%d\n",b);//b—int*b----int

多级指针、野指针、指针的意义(参数传递的三种方式)

多级指针:低级指针给高级指针赋值的时候会报错误

高级指针给低级指针赋值的时候会报警告

参数传递的三种方式:

值传递:

指针传递:

引用传递:就是将你一个引用传递进去,相当于把变量本身传递进去了

函数的调用:

1.函数名称+();就是函数调用,除非特殊情况没有;

#include <stdio.h> int haha(int x) { x++; return x; } int main(int argc, char const *argv[]) { haha(haha(10)); return 0; }

2.如果函数有参数就必须按照参数的个数及数据类型进行对应的传参

如果没有参数就算了

3.如果函数有返回值

你可以使用一个相同数据类型的变量去接返回值

也可以直接使用

也可以不使用

如果没有返回值就算了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。