【剧情作品】未完待续~

#include<windows.h>
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<conio.h>
#pragma GCC optimize(2)
using namespace std;
const int X=8,Y=17,SX=5,SY=40;//如果版本比较新,又无法正确甄别鼠标,试试SX=5,SY=40
POINT p;int chmd=0;const int chlong=30;int ans,ans2,ans3;string nor="你选择:";
#define takekey(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define close HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);	DWORD mode;GetConsoleMode(hStdin, &mode);mode &= ~ENABLE_QUICK_EDIT_MODE;SetConsoleMode(hStdin, mode)
#define getk GetCursorPos(&p)
void hide(){
	HANDLE h_GAME =GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO cursor_info;
	GetConsoleCursorInfo(h_GAME,&cursor_info);
	cursor_info.bVisible=false;
	SetConsoleCursorInfo(h_GAME,&cursor_info);
}int random(int x){
	return rand()%x+1;
}void gotoxy(int x, int y){
	HANDLE hout;COORD coord={x,y}; 
	hout=GetStdHandle(STD_OUTPUT_HANDLE);  
	SetConsoleCursorPosition(hout,coord);  
}void color(int ForgC, int BackC) {
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}bool ok(int sx,int sy,int l,int h){
	sx--,sy--;
	return p.x>=SX+sx*X&&p.x<=SX+sx*X+l*X&&p.y>=SY+sy*Y&&p.y<=SY+sy*Y+h*Y;
}void sayQ(string s){
	bool flag=false;
	int L=s.length();
	while(takekey(13));
	for(int i=0;i<L;i++){
		printf("%c",s[i]);
		if(takekey(13))flag=true;
		if(!flag)Sleep(30);
	}while(takekey(13));
	//getch();printf("\n");
	return;
}void say(string s){
	bool flag=false;
	int L=s.length();
	while(takekey(13)||takekey(1));
	for(int i=0;i<L;i++){
		printf("%c",s[i]);
		if(takekey(13)||takekey(1))flag=true;
		if(!flag)Sleep(30);
	}while(takekey(13)||takekey(1));
	while(!(takekey(13)||takekey(1)));printf("\n");
	return;
}void cls(){
	color(7,0);
	gotoxy(0,0);
	for(int i=0;i<10;i++)
		printf("                                                                  \n");
	gotoxy(0,0);
	return;
}int choose(string s[],int l,string strt){
	cls();
	sayQ(strt);printf("\n");
	if(chmd){
		bool fl=true;
		for(int i=0;i<l;i++){
			cout<<s[i]<<endl;
			for(int j=chlong-s[i].length();j;j--)
				s[i]=s[i]+" ";
		}
		while(fl){
			gotoxy(0,1);
			getk;//0 blak  7 white
			for(int i=0;i<l;i++){
				if(ok(0,i+2,chlong+1,1)){
					color(0,7);
					if(takekey(1)){
						cls();
						color(7,0);
						return i;
					}
				}else color (7,0);
				cout<<s[i]<<endl;
			}
				
		}
	}else {
		for(int i=0;i<l;i++)
			printf("%d.",i+1),cout<<s[i]<<endl;
		char c=getch();
		while(c<'1'||c>'0'+l)c=getch();
		return c-'0';
	}color(7,0);
}void start(){
	say("TAdventure(回车键继续)");
	cls();string s1[2]{"键盘点击","鼠标点击"};
	chmd=choose(s1,2,"按键选择:");
	if(chmd)say("使用鼠标点击需要全屏程序");
	cls();
	return;
}
void part1(){
	say("part1");
	cls();
	say("车干热爱核平");
	say("然而天不美其意");
	say("每日下范进雨");
	say("范进手舞足蹈,大喊:噫好了我中了");
	say("使天下不得太平");
	say("于是你作为车干挺身而出去屠天");
	say("车干去找了一个高人->龙");
	say("龙让先他去爬天梯");
	cls();
	say("路上,碰到了胡屠夫");
	say("他的生意正好,忙着把一个个范进打成相公编入他的队伍");
	say("该死的畜生你中了甚么!");
	string s2[2]{"挑战胡屠夫","向他问好"};
	ans=choose(s2,2,nor);
	if(ans==0){
		say("胡屠夫派出了成百上千个范进击败了你");
		return;
	}say("胡屠夫微微点头");
	say("我今天心情好,以后你可以来我这买东西");
	say("解锁->胡屠夫的商店");
	say("天派来孔乙己拦住了你");
	say("他窃走了你的剑、笔、纸、砚");
	say("并且排出九文大钱压住了你");
	string s3[3]{"大喊大叫","嘲笑他","向他请教"};
	ans=choose(s3,3,nor);
	if(ans==0){
		say("远处丁举人风一样的跑过来");
		say("说着:好啊,昏了头了,还偷东西");
		say("打折了孔乙己的腿");
		say("丁举人拿回了那九文大钱");
	}else if(ans==1){
		string s4[2]{"孔乙己你真的认字吗","孔乙己你又偷东西了"};
		ans2=choose(s4,2,"你说:");
		if(ans2==0){
			say("孔乙己显得不置可否");
			string s5[2]{"那真是太博学了","你怎的连半个秀才也捞不到呢"}; 
			ans3=choose(s5,2,"你又问:");
			if(ans3==0){
				say("孔乙己哈哈大笑");
				say("先生好眼力");
				say("说罢,放了你"); 
			} else {
				say("孔乙己立刻显出颓唐不安的模样");
				say("脸上笼上了一层灰色");
				say("嘴里说些话");
				say("可是全是之乎者也之类,一些不懂了");
				say("说罢,自顾自走了,只剩下你一个");
				return ; 
			}
		}else{
			say("你怎么这样凭空污人清白…");
			say("么清白?我前天亲上眼见你偷了何家的书,吊着打。");
			say("窃书不能算偷…窃书!…读书人的事,能算偷么?");
			say("说罢,自顾自走了,只剩下你一个");
			return;
		}
	}else{
		say("请问:茴香豆的茴怎么写?");
		say("不能写罢?我教给你,记着!这些字应该记着。将来做掌柜的时候,写帐要用");
		say("回有四种写法,我写给你看:回、囘、囬、廻...");
		string s6[2]{"认真学习","窃东西"};
		ans2=choose(s6,2,nor);
		if(ans2==0)say("孔乙己十分高兴,放了你");
		else{
			say("你一把抓下他的长衫");
			say("孔乙己像老了十岁似的脸上黑而且瘦");
			say("他还了你的东西:长衫还我罢");
			say("你还了长衫,快步走了");
		}
	}say("你一路走到天梯口");
	return;
}
int main(){
	close;hide();
	srand(time(0));
	start();
	part1();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值