#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;
}
【剧情作品】未完待续~
最新推荐文章于 2025-05-21 23:13:20 发布