「文字游戏新纪元:二三四工作室的 C++ 道魔不合(崩铁改版)」

目录

前言

1.逐字输出的函数:

2.Windows 控制台中设置光标位置的函数

库引用:

获取标准输出句柄:

设置坐标:

设置光标位置:

 3.头文件需要:

4.主要内容:

数字代表: 

主要功能

注意事项

5.总结

前言

大家好,我是二三四工作室的CEO兼总策划兼动画师兼……(此处省略99个职位),的——小班!

就在最近,我们的四人工作室也是心血来潮准备做一款游戏,当然只是最基础了文字游戏,就如同标题所说,游戏的名字就是——道魔不合!

接下来就给给位看官看看代码:

1.逐字输出的函数:

代码如下:

void gege(string a,int b){
	for(int i=0;i<a.size();i++){
		cout<<a[i];Sleep(b);
	}
}

这一串的代码就十分的好理解了,就是引入一个字符串,然后一个个的输出和换行就行了!q(≧▽≦q)

2.Windows 控制台中设置光标位置的函数

代码如下:

void setcursor(int xxxxx, int yyyyy)
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD setps;
    setps.X = xxxxx; setps.Y = yyyyy;
    SetConsoleCursorPosition(hCon, setps);
}
  1. 库引用:

    • #include <windows.h>:这个头文件包含了 Windows API 的定义,允许使用诸如 GetStdHandle 和 SetConsoleCursorPosition 这样的函数。
  2. 获取标准输出句柄:

    • HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);:这行代码获取当前进程的标准输出设备的句柄(通常是控制台)。
  3. 设置坐标:

    • COORD setps;COORD 是 Windows API 中定义的一个结构,包含两个整型成员 X 和 Y,用于表示控制台中的坐标。
    • setps.X = xxxxx; 和 setps.Y = yyyyy;:将传入的参数赋值给 COORD 结构体的成员。
  4. 设置光标位置:

    • SetConsoleCursorPosition(hCon, setps);:调用 Windows API 函数设置控制台光标的位置。

 3.头文件需要:

#include<stdio.h>
#include <conio.h>
#include<windows.h>
#include <bits/stdc++.h>

4.主要内容:

代码如下: 

void aa(){
	setcursor(0,0);
	int eat=0,a[10][10]={
	1,1,1,1,1,1,1,1,1,1,
	1,0,0,0,0,0,0,0,0,1,
	1,0,0,0,0,3,4,3,0,1,
	1,0,0,0,0,0,0,0,0,1,
	1,0,0,0,0,0,0,0,0,1,
	1,5,0,0,0,0,0,0,0,1,
	1,0,0,0,0,0,0,0,0,1,
	1,0,0,0,0,0,0,0,0,1,
	1,0,0,0,0,0,20,0,0,1,
	1,1,1,1,1,1,1,1,1,1};
	char s;
	while(1){
		for(int i=0;i<10;i++){
			for(int j=0;j<10;j++){ 
				if(a[i][j]==1)printf("[]");
				if(a[i][j]==5)printf("你");
				if(a[i][j]==0||a[i][j]<-4)printf("  ");
				if(a[i][j]==20){
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0xB0);
					printf("!!");
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0F);
				}
				if(a[i][j]==3)printf("||"); 
				if(a[i][j]==m2){
					if(m1==2){
						SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0A);
						printf("门");
						a[i][j]=9;
						m2=9;
						SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0F);}
					else printf("墓");
				}
			}
			printf("             \n");
		}
		cout<<"HP:"<<HP<<"  LV:"<<LV<<"  LB:"<<LB_line<<"             \n";
		if(jg1>0){
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0xF0);
			cout<<"[ j ]";
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0F);
		}else printf("\r                                               ");
		
		s=getch();
		if(s=='j'){
			if(jg1==1){          //和鬼对话 
				if(m1==0){
					cout<<"\n\n鬼: 窝好饿";
					a[1][1]=-5;
					a[8][1]=-6;
					a[1][6]=-7;
					m1=1;
				}
				if(m1==1){
					cout<<"\n\n鬼: 你有吃的吗?     1.有[提交]\n                     2.没有";s=getch();
					if(s=='1'){
						if(eat==3){cout<<"\n\n鬼: 谢谢尼";m1=2;s=getch();}
						else{cout<<"\n(你没有足够的)";s=getch();}
					}
				}
			}system("cls");
			if(jg1==2){system("cls");Sleep(1000);break;}//换场景 
		}

		//移动 
		if(s=='a'){if(a[y][x-1]<1){a[y][x]=0;x--;}x2=x-1;y2=y;}
		if(s=='d'){if(a[y][x+1]<1){a[y][x]=0;x++;}x2=x+1;y2=y;}
		if(s=='s'){if(a[y+1][x]<1){a[y][x]=0;y++;}x2=x;y2=y+1;}
		if(s=='w'){if(a[y-1][x]<1){a[y][x]=0;y--;}x2=x;y2=y-1;}
		if(a[y2][x2]>0){
			if(a[y2][x2]==9)jg1=2;
			if(a[y2][x2]==20)jg1=1;
		}else jg1=0;
		
		if(a[y][x]==-5){
			cout<<"\n\n你找到了一个碗";Sleep(1000);
			a[y][x]=0;eat++;system("cls");
		}
		if(a[y][x]==-6){
			cout<<"\n\n你找到了三柱香";Sleep(1000);
			a[y][x]=0;eat++;system("cls");
		}
		if(a[y][x]==-7){
			cout<<"\n\n你找到了一团米";Sleep(1000);
			a[y][x]=0;eat++;system("cls");
		}
		a[y][x]=5;
		setcursor(0,0);
	}
}

数字代表: 

1: 代表墙壁(不可通过)

0: 代表可通行区域

5 :代表玩家当前位置

20 :代表某个特殊位置(如鬼的位置)

主要功能

1.显示地图:采用二维数组 a[10][10] 表示游戏中的地图,数组中的不同值对应不同的元素,例如墙壁、角色(你)、物品等。

2.控制角色移动:通过键盘输入控制角色的移动(上下左右)。

3.与NPC互动:在特定位置(例如与鬼对话)进行对话和事件触发。

4.收集物品:角色可以找到并收集物品(如碗、香、米)。

注意事项

1.函数调用setcursorSetConsoleTextAttributeSleep 等函数需要包含适当的头文件(如 <windows.h>)以便正常运行。

2.颜色设置:通过 SetConsoleTextAttribute 改变控制台文字的颜色,使得游戏界面更具可读性。

展示

 

5.总结

 这一串的代码是我们二三四工作室技术部花了很久才做出了的,所以请大家多多包涵,有做的不好的地方可以评论,最后大家可以期待一下第二期的文章。

好了最后的最后,如果有想要加入二三四工作室的学生党可以加我的V:xiaoban182。

好了各位再见!ヾ( ̄▽ ̄)Bye~Bye~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值