使用C语言制作文字游戏

C语言是世界上运行速度最快的高级语言,但缺点是过于繁琐而且贴近底层,导致门槛很高。

这篇文章会教你使用C语言写一个最简单的文字游戏,可能需要其它高级语言基础。

初始化

首先需要导入两个库,stdiostring,后面会用到。

使用include语句导入库。

#include<stdio.h>
#include<string.h>

然后,定义一个空的字符串变量,用来接应输入。

#include<stdio.h>
#include<string.h>
char select[0]={};

最后,再写一个main函数作为实际运行的地方,初始化完成。

#include<stdio.h>
#include<string.h>
char select[0]={};
int main(){
    //程序在这里运行
}

输入与输出

文字游戏是离不开文字的,使用stdioprintf函数可以打印文字。

#include<stdio.h>
#include<string.h>
char select[0]={};
int main(){
    printf("这里是文字游戏测试\n");
}

其中的\n是转义符,可以使下一段文字换行。

如果有输出,还需要有输入,scanf函数可以获取键盘输入,并存放在一个变量中。

scanf输入任何字符后,都会执行下一条语句,需要注意的是,只输入空白会没有任何反应

#include<stdio.h>
#include<string.h>
char select[0]={};
int main(){
    printf("这里是文字游戏测试\n");
    scanf("%s",&select);
    printf("你可以输入任意字符继续,除了空白\n");
    scanf("%s",&select);
    printf("现在,请选择\n");
}

循环与判断

文字游戏要有互动,玩家可以自由地选择如何行动,实现这种功能需要判断。

判断语句有:ifelse ifelse等。

C语言的字符串无法直接使用运算符比较,需要使用string!strcmp函数。

#include<stdio.h>
#include<string.h>
char select[0]={};
int main(){
    printf("这里是文字游戏测试\n");
    scanf("%s",&select);
    printf("你可以输入任意字符继续,除了空白\n");
    scanf("%s",&select);
    printf("现在,请选择\n");
    printf(">A<一个选项\n");
    printf(">B<另一个选项\n");
    scanf("%s",&select);
    if(!strcmp(select,"A")){
        printf("这里将显示A的剧情\n");
        return 0;
    }else if(!strcmp(select,"B")){
        printf("这里将显示B的剧情\n");
        return 0;
    }else{
        printf("无效输入\n");
    }
}

但是这样会出现一个问题,如果玩家输入了A与B以外的字符,游戏告知“无效输入”后就自动退出了,可以使用循环语句while等避免这种情况。

#include<stdio.h>
#include<string.h>
char select[0]={};
int main(){
    printf("这里是文字游戏测试\n");
    scanf("%s",&select);
    printf("你可以输入任意字符继续,除了空白\n");
    scanf("%s",&select);
    printf("现在,请选择\n");
    while(1){
        printf(">A<一个选项\n");
        printf(">B<另一个选项\n");
        scanf("%s",&select);
    	if(!strcmp(select,"A")){
	        printf("这里将显示A的剧情\n");
	        return 0;
        }else if(!strcmp(select,"B")){
	        printf("这里将显示B的剧情\n");
	        return 0;
    	}else{
	        printf("无效输入\n");
	    }
    }
}

完成

至此,全程序完成。

在没有特别声明的情况下,内容均为原创,请遵守CC BY-NC-SA 4.0版权协议!

评论

  1. florian
    Windows Edge 117.0.2045.55
    7 月前
    2023-10-05 20:53:40

    你好,你最后一个代码文本的片段存在一些问题:
    1、初始化select数组为1个元素,但在后面的scanf操作中用%s来读取用户输入,%s是可以接受一个字符串输入的,因此这样的输入方式并不安全,比如如果用户输入一个字符串,则将select后面的地址内容全部覆盖了;
    2、另外,select数组的定义应该在任何一个模块里面,你必须知道任何一个变量在运行时都是需要入栈的,因此对于非常量而言,将其放在main函数外面是错误的;
    3、while循环中的条件判断语句的第三个语句,你没有加返回语句:return 0;
    4、while循环外面也没有放return 0;

    • 博主
      florian
      Windows Edge 118.0.2088.27
      7 月前
      2023-10-05 21:45:21

      1、这个应该是涉及到底层原理了,我没有钻研这块地方,但是在别的编程语言应该不会有这种现象。
      2、把变量放在外面是为了跨越函数,当成全局变量,如果只放在main函数里,别的函数就不知道这个变量的存在,对于模块化编程不利。
      3、else的作用就是让玩家重新输入,加return 0会退出游戏。
      4、如果已经进入了循环,加return 0就没有意义了。

发送评论 编辑评论

注意事项:
  1. 请遵守法律,友善发言。
  2. 评论被回复后没有提醒,请自行关注,敬请见谅。
  3. 无关的内容请移步留言板。
  4. 支持Markdown,可以使用第三方图床插入图片。

				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
呼呼
上一篇
下一篇