游戲不長,但敲了半個月呢,都是些零碎時間,這只是第一章,剩余章節后續會發上(劇情十分狗血,不喜勿噴,,,,,,)代碼中一部分自定義頭檔案都是我以前發過的,可以從我歷史文章中找,接下來上代碼,(不要忘記評論、點贊、關注和轉發哦~~~)
/*
游戲名稱:Interstellar Tracking (第一章)
游戲設計:S_JH330206
劇本設計:S_JH330206、_JH_duangduang
代碼實作:S_JH330206
游戲測驗:S_JH330206、_JH_duangduang、jd0630
游戲說明:
按鍵說明:
wsad-移動;
e-打開/關閉坐標資料;
tab-打開/關閉背包;
enter-打開箱子;
jkl-分別為使用背包欄前三個物品(由于本章節只有一個物品即掃描儀,所以沒有設計交換背包內物品位置的功能);
圖示說明:
墻(顏色不唯一,阻擋玩家行走);
空氣(這個不用說,黑色的);
門(帶有DR的方塊,站上去即可通行)
記錄儀(帶有RC的方塊,站上去即可讀取);
箱子(帶有BX的方塊,enter即可打開/關上,由于本章節只有一個物品,沒有設計玩家物品欄與箱子的同屏);
玩家(更不用說了,實在找不到就移動一下);
*/
#include <iostream>
#include <windows.h>
#include "BackGround.h"
#include "ConsoleColor.h"
#include <conio.h>
#include "GotoXY.h"
#include "HideCursor.h"
#define LeftSpace 5
#define UpSpace 2
#define Box 1000000
using namespace std;
int Map[100][100][100]={0}; // 0 空氣 1 墻 2 玩家 3 門 4 記錄儀 box 箱子
int px,py;
int d1x,d1y;
int d2x,d2y;
int tx,ty;
bool flag;
bool Fflag;
bool bo;
bool sb;
char ch;
int backpack[1000];//1 scanner
int box[1000][1000];
void Box_1();
void ReCord(int);
void OutPut_Map(int);
void bag_open();
void LOGO();
void scan();
void FL_CT(int);
void BAG(){
GotoXY(12,16);
BackGround(7,0);
for (int i=1;i<=3;i++){
if (backpack[i]){
if (backpack[i]==1){
cout<<"掃描儀";
}
}
else{
cout<<" ";
}
if (i<3)
cout<<"|";
}
}
void scan(){
system("title 掃描結果");
BackGround (3,0);
cout<<"[掃描結果:"<<endl;
Sleep(300);
cout<<"[天繪號殘骸"<<endl;
Sleep(300);
cout<<"[艙體完整度:63%"<<endl;
Sleep(300);
cout<<"[已記錄至資料庫"<<endl;
Sleep(300);
cout<<"[(你沒有資料讀取器!!!)"<<endl;
Sleep(300);
cout<<"[";
system("pause");
system("cls");
cout<<"[艙體完整度只有63%?"<<endl;
Sleep(300);
cout<<"[艙體破壞相當大"<<endl;
Sleep(300);
cout<<"[還好我們所處區域沒有破壞"<<endl;
Sleep(300);
cout<<"[好了,趕緊逃出這是非之地吧"<<endl;
Sleep(2000);
system("cls");
OutPut_Map(3);
Sleep(600);
GotoXY(6,3);
BackGround (7,0);
cout<<" ";
Sleep(1000);
GotoXY(6,3);
BackGround (0,6);
cout<<"控";
BackGround(7,0);
Sleep(1000);
system("cls");
BackGround (3,0);
cout<<"[操控桿已升起,駕駛逃離,"<<endl;
BackGround(7,0);
Sleep(1500);
FL_CT(0);
Sleep(1600);
cout<<endl;
system("pause");
exit(0);
return;
}
void CT_First(){
system("title ") ;
BackGround(3,0);
cout<<"[(記錄時間:1990年2月8日, 天繪號運載艦)"<<endl;
Sleep(800);
cout<<"[你是AI機器人"<<endl;
Sleep(800);
cout<<"[編號:03-JH-202128"<<endl;
Sleep(800);
cout<<"[1997年3月1日 船艙爆炸"<<endl;
Sleep(800);
cout<<"[你進入休眠狀態......"<<endl;
Sleep(800);
cout<<"[當你看到這段文字"<<endl;
Sleep(800);
cout<<"[你正在實驗室中醒來,"<<endl;
Sleep(2500);
BackGround(7,0);
system("cls");
Sleep(400);
return ;
}
void LOGO(){
int logo[5][12]={ //Interstellar Tracking
{1,1,1,1,1,0,0,1,1,1,1,1},
{0,0,1,0,0,0,0,0,0,1,0,0},
{0,0,1,0,0,0,0,0,0,1,0,0},
{0,0,1,0,0,0,0,0,0,1,0,0},
{1,1,1,1,1,0,0,0,0,1,0,0},
};
GotoXY(0,0);
for (int i=1;i<=UpSpace;i++){
cout<<endl;
}
for (int i=0;i<5;i++){
for (int j=1;j<=LeftSpace;j++){
BackGround(7,0);
cout<<" ";
}
for (int j=0;j<12;j++){
if (logo[i][j]){
BackGround(0,6);
}
else{
BackGround(7,0);
}
cout<<" ";
}
cout<<endl;
}
GotoXY(0,8);
cout<<"I n t e r s t e l l a r T r a c k i n g ";
Sleep(1500);
system("cls");
int JH[5][12]={
{0,0,0,0,1,0,0,1,0,0,0,1},
{0,0,0,0,1,0,0,1,0,0,0,1},
{0,0,0,0,1,0,0,1,1,1,1,1},
{0,0,0,0,1,0,0,1,0,0,0,1},
{0,1,1,1,1,0,0,1,0,0,0,1},
};
GotoXY(0,0);
for (int i=1;i<=UpSpace;i++){
cout<<endl;
}
for (int i=0;i<5;i++){
for (int j=1;j<=LeftSpace;j++){
BackGround(7,0);
cout<<" ";
}
for (int j=0;j<12;j++){
if (JH[i][j]){
BackGround(0,3);
}
else{
BackGround(7,0);
}
cout<<" ";
}
cout<<endl;
}
GotoXY(14,8);
BackGround (7,0);
cout<<"J H S T U D I O";
Sleep(1500);
system("cls");
Sleep(2000);
return ;
}
void FL_CT(int i){
if (i){
system("cls");
GotoXY(50,10);
BackGround(6,0);
cout<<"第 一 章 : 醒 來";
Sleep(1500);
system("cls");
}
else{
system("cls");
GotoXY(50,10);
BackGround(6,0);
cout<<"第 一 章 完 結";
}
}
void Map_Move_by(int k){
BAG();
switch(ch){
case 'w':
if (Map[k][px-1][py]==0){
Map[k][px-1][py]=2;
Map[k][px][py]=0;
px-=1;
}
else if (Map[k][px-1][py]==3)
{
system ("cls");
if (px-1==d1x&&py==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px-1][py]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 's':
if (Map[k][px+1][py]==0){
Map[k][px+1][py]=2;
Map[k][px][py]=0;
px+=1;
}
else if (Map[k][px+1][py]==3)
{
system ("cls");
if (px+1==d1x&&py==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px+1][py]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 'a':
if (Map[k][px][py-1]==0){
Map[k][px][py-1]=2;
Map[k][px][py]=0;
py-=1;
}
else if (Map[k][px][py-1]==3)
{
system ("cls");
if (px==d1x&&py-1==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px][py-1]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 'd':
if (Map[k][px][py+1]==0){
Map[k][px][py+1]=2;
Map[k][px][py]=0;
py+=1;
}
else if (Map[k][px][py+1]==3)
{
system ("cls");
if (px==d1x&&py+1==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px][py+1]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 'e':
if (sb==0)
sb=1;
else if (sb==1) {
sb=0;
GotoXY(80,0);
cout<<" ";
GotoXY(80,1);
cout<<" ";
GotoXY(80,2);
cout<<" ";
GotoXY(80,3);
cout<<" ";
GotoXY(80,4);
cout<<" ";
GotoXY(80,5);
cout<<" ";
GotoXY(80,6);
cout<<" ";
}
break;
case 9:
bag_open();
break;
case 'j':
if(backpack[1]==1){
GotoXY(px-6,py-1);
cout<<"掃描中......";
Sleep(1000);
system("cls");
scan();
return;
}
break;
};
GotoXY(0,0);
OutPut_Map(k);
if (tx-1==px&&ty==py||tx+1==px&&ty==py||tx==px&&ty-1==py||tx==px&&ty+1==py)
{
if (k==3)
{
GotoXY(tx-4,ty-2);
cout<<"箱子(回車打開)";
ch=getch();
if (ch==13)
{
Box_1();
}
else
{
Map_Move_by(k);
}
}
}
}
void Peo_Read(int x,int y,int k){
switch (Map[k][x][y]){
case 0:
cout<<"空";
break;
case 1:
cout<<"墻";
break;
case 2:
cout<<"玩";
break;
case 3:
cout<<"門";
break;
case 4:
cout<<"計";
break;
case 5:
cout<<"箱";
break;
}
}
void Map_Watch(int x,int y,int k){
GotoXY (80,0);
cout<<"人物坐標:"<<"("<<x<<", "<<y<<")" ;
GotoXY (80,1);
cout<<"當前房間編號:"<<k;
GotoXY (82,2);
Peo_Read(x-1,y,k);
GotoXY (80,3);
Peo_Read(x,y-1,k);cout<<"玩";Peo_Read(x,y+1,k);
GotoXY (82,4);
Peo_Read(x+1,y,k);
return ;
}
void MapT(int k)
{
if (k==1)
{
system("title 老舊的實驗室");
for (int i=1;i<=15;i++)
{
for (int j=1;j<=35;j++)
{
if (i==8&&j==17)
{
Map[1][i][j]=2;
px=i;
py=j;
}
else if (i==12&&j==35)
{
Map[1][i][j]=3;
d1x=i;
d1y=j;
}
else if (i==1||j==1||i==15||j==35)
{
Map[1][i][j]=1;
}
else if (i==7&&j==15||i==7&&j==19||i==9&&j==15||i==9&&j==19||i==6&&j==15||i==6&&j==16||i==6&&j==18||i==6&&j==19||i==10&&j==15||i==10&&j==16||i==10&&j==18||i==10&&j==19)
{
Map[1][i][j]=1;
}
else
{
Map[1][i][j]=0;
}
}
}
if (Fflag)
{
Map[1][12][34]=2;
Map[1][8][17]=0;
px=12;
py=34;
}
return;
}
if (k==2)
{
system("title 老舊的實驗室");
for (int i=1;i<=15;i++)
{
for (int j=1;j<=35;j++)
{
if (i==2&&j==2)
{
Map[2][i][j]=4;
}
else if (i==12&&j==2)
{
Map[2][i][j]=2;
px=i;
py=j;
}
else if (i==12&&j==1)
{
Map[2][i][j]=3;
d1x=i;
d1y=j;
}
else if (i==1||j==1||i==15||j==35)
{
Map[2][i][j]=1;
}
else
{
Map[2][i][j]=0;
}
}
}
return;
}
if (k==3)
{
system("title 隱藏的逃生艙");
for (int i=1;i<=5;i++)
{
for (int j=1;j<=5;j++)
{
if (i==3&&j==3)
{
Map[3][i][j]=2;
px=i;
py=j;
}
else if (i==4&&j==4)
{
tx=i;
ty=j;
Map[3][i][j]=Box;
}
else if (i==1||j==1||i==5||j==5)
{
Map[3][i][j]=1;
}
else
{
Map[3][i][j]=0;
}
}
}
return;
}
}
void ReCord(int k)
{
if (k==2)
{
system ("title 老舊的記錄儀");
for (int i=1;i<=7;i++)
{
BackGround(7,0);
cout<<"這里曾經有人做實驗..."<<endl;
Sleep(300);
}
cout<<"..."<<endl;
system("pause");
system ("cls");
return ;
}
}
void OutPut_Map(int k)
{
for (int i=1;i<=15;i++)
{
for (int j=1;j<=35;j++)
{
if (Map[k][i][j]==1)
{
if (k==1)
BackGround(0,3);
if (k==2)
BackGround(0,9);
if (k==3)
BackGround(0,3);
cout<<" ";
}
if (Map[k][i][j]==0)
{
BackGround(7,0);cout<<" ";
}
if (Map[k][i][j]==2)
{
BackGround(0,9);cout<<" ";
}
if (Map[k][i][j]==3)
{
BackGround(0,6);cout<<"DR";
}
if (Map[k][i][j]==4)
{
BackGround(0,1);cout<<"RC";
}
if (i==tx&&j==ty)
{
if (k==3)
{
Map[k][i][j]=5;
BackGround(0,6);
cout<<"BX";
}
}
}
cout<<endl;
}
BackGround(7,0);
BAG();
return;
}
void Map_Move(int k)
{
while (1)
{
if (sb)
Map_Watch(px,py,k);
if (kbhit())
{
if (!bo)
ch=getch();
else{
bo=0;
GotoXY(0,0);
OutPut_Map(k);
}
BAG();
switch(ch){
case 'w':
if (Map[k][px-1][py]==0){
Map[k][px-1][py]=2;
Map[k][px][py]=0;
px-=1;
}
else if (Map[k][px-1][py]==3)
{
system ("cls");
if (px-1==d1x&&py==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px-1][py]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 's':
if (Map[k][px+1][py]==0){
Map[k][px+1][py]=2;
Map[k][px][py]=0;
px+=1;
}
else if (Map[k][px+1][py]==3)
{
system ("cls");
if (px+1==d1x&&py==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px+1][py]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 'a':
if (Map[k][px][py-1]==0){
Map[k][px][py-1]=2;
Map[k][px][py]=0;
py-=1;
}
else if (Map[k][px][py-1]==3)
{
system ("cls");
if (px==d1x&&py-1==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px][py-1]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 'd':
if (Map[k][px][py+1]==0){
Map[k][px][py+1]=2;
Map[k][px][py]=0;
py+=1;
}
else if (Map[k][px][py+1]==3)
{
system ("cls");
if (px==d1x&&py+1==d1y)
{
flag=0;
}
return ;
}
else if (Map[k][px][py+1]==4)
{
system ("cls");
ReCord(2);
flag=1;
return ;
}
break;
case 'e':
if (sb==0)
sb=1;
else if (sb==1) {
sb=0;
GotoXY(80,0);
cout<<" ";
GotoXY(80,1);
cout<<" ";
GotoXY(80,2);
cout<<" ";
GotoXY(80,3);
cout<<" ";
GotoXY(80,4);
cout<<" ";
GotoXY(80,5);
cout<<" ";
GotoXY(80,6);
cout<<" ";
}
break;
case 9:
bag_open();
break;
case 'j':
if(backpack[1]==1){
GotoXY(py-1,px-6);
cout<<"掃描中......";
Sleep(1000);
system("cls");
scan();
return;
}
break;
};
GotoXY(0,0);
OutPut_Map(k);
if (tx-1==px&&ty==py||tx+1==px&&ty==py||tx==px&&ty-1==py||tx==px&&ty+1==py)
{
if (k==3)
{
GotoXY(tx-4,ty-2);
cout<<"箱子(回車打開)";
ch=getch();
if (ch==13)
{
Box_1();
}
else
{
Map_Move_by(k);
}
}
}
}
}
return;
}
void Box_1(){
int count = 1;
system ("cls");
system("title 箱子") ;
sb=0;
if (box[1][1]==1)
cout<<"["<<count<<" 掃描儀"<<"x"<<1<<endl;
count ++;
char bag_read=getch();
if (bag_read=='1'){
backpack[1]=1;
box[1][1]=0;
GotoXY(15,0);
cout<<"get!!!";
getch();
}
GotoXY(0,0);
cout<<" ";
GotoXY(0,0);
OutPut_Map(3);
Map_Move(3);
}
void bag_open(){
system("cls");
system("title 背包");
for (int i=1;i<=9;i++){
cout<<"["<<i;
if (backpack[i]){
if (backpack[i]==1){
cout<<"掃描儀";
}
}
cout<<endl;
}
getch();
return ;
}
void CT2()
{
system("title ");
BackGround(3,0);
cout<<"[感覺不對."<<endl;
Sleep(1000);
cout<<"[有機器在運動..."<<endl;
Sleep(1000);
cout<<"[在哪里???"<<endl;
Sleep(1000);
system("cls");
for (int s=1;s<=3;s++)
{
if (s==2)
{
Map[2][15][10]=0;
Map[2][14][10]=1;
Map[2][15][11]=0;
Map[2][14][11]=1;
}
if (s==3)
{
Map[2][14][10]=0;
Map[2][14][9]=1;
Map[2][14][11]=0;
Map[2][14][12]=1;
}
GotoXY(0,0);
OutPut_Map(2);
Sleep(1000);
}
system("cls");
Sleep(1000);
BackGround(3,0);
cout<<"[你被彈出實驗室."<<endl;
Sleep(1000);
system("cls");
BackGround (7,0);
return;
}
void _FunctionUse()
{
LOGO();
CT_First();
FL_CT(1);
MapT(1);
OutPut_Map(1);
Map_Move(1);
MapT(2);
OutPut_Map(2);
Map_Move(2);
if (!flag)
{
Fflag=1;
_FunctionUse();
return ;
}
CT2();
MapT(3);
OutPut_Map(3);
Map_Move(3);
}
int main()
{
system("title ");
HideCursor();
box[1][1]=1;
_FunctionUse();
return 0;
}
不要忘記評論、點贊、關注和轉發哦~~~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259321.html
標籤:其他
