Files
Console-Login/App1/TextAdventure.cs
2014-02-20 20:21:45 +00:00

665 lines
22 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace App1 {
class Game {
public void start() {
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
Introduction();
}
public string Level { get; private set; } = "Introduction";
public int Food { get; private set; } = 10;
public int Water { get; private set; } = 10;
public int Comfort { get; private set; } = 5;
public int PlayerHunger { get; private set; } = 10;
public int PlayerHealth { get; private set; } = 10;
public int Radiation { get; private set; } = 0;
public int TimePassed { get; private set; } = 0;
public bool EatSuccess { get; private set; } = false;
public bool RadiationSuit { get; private set; } = false;
private void Save() {
Console.Clear();
string SaveGame = Level + "," + Food + "," + Water + "," + Comfort + ","
+ PlayerHealth + "," + PlayerHunger + "," + Radiation + "," + RadiationSuit;
var SaveGameBytes = Encoding.UTF8.GetBytes(SaveGame);
string SaveGame64 = Convert.ToBase64String(SaveGameBytes);
Console.WriteLine("Saving the game will overwrite any existing saves, are you sure you want to continue? Y/N");
var response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case 'Y':
case 'y':
File.WriteAllText("Save.sav", SaveGame64);
return;
case 'N':
case 'n':
return;
}
return;
}
private void Load() {
Console.Clear();
if (File.Exists("Save.sav")) {
int LoadSuccess = 1;
while (LoadSuccess == 1) {
if (Food > 10) {
LoadSuccess = 0;
} else if (Water > 10) {
LoadSuccess = 0;
} else if (PlayerHealth > 10) {
LoadSuccess = 0;
} else if (Comfort > 10) {
LoadSuccess = 0;
} else {
string content64 = File.ReadAllText("Save.sav");
var contentbytes = Convert.FromBase64String(content64);
string content = Encoding.UTF8.GetString(contentbytes);
string[] variables = content.Split(',');
string level = variables[0];
Food = int.Parse(variables[1]);
Water = int.Parse(variables[2]);
Comfort = int.Parse(variables[3]);
PlayerHealth = int.Parse(variables[4]);
PlayerHunger = int.Parse(variables[5]);
Radiation = int.Parse(variables[6]);
RadiationSuit = Convert.ToBoolean(variables[7]);
Console.WriteLine("Succesfully loaded the games state");
Console.WriteLine("Press enter to continue");
Console.ReadKey();
switch (level) {
case "Introduction":
Introduction();
break;
case "GameStart":
GameStart();
break;
case "Branch_1_1":
Branch_1_1();
break;
case "Branch_2_1":
Branch_2_1();
break;
case "Branch_3_1":
Branch_3_1();
break;
case "Branch_1_1_1":
Branch_1_1_1();
break;
case "Branch_1_1_2":
Branch_1_1_2();
break;
case "Branch_1_1_3":
Branch_1_1_3();
break;
case "Branch_2_1_1":
Branch_2_1_1();
break;
case "Branch_2_1_2":
Branch_2_1_2();
break;
case "Branch_2_1_3":
Branch_2_1_3();
break;
case "Branch_3_1_1":
Branch_3_1_1();
break;
case "Branch_3_1_2":
Branch_3_1_2();
break;
case "Branch_3_1_3":
Branch_3_1_3();
break;
}
return;
}
}
if (LoadSuccess == 0) {
Console.WriteLine("The load failed, maybe you eddited a value or there is an invalid entry");
Console.WriteLine("Press enter to continue");
Console.ReadKey();
Introduction();
}
} else {
Console.WriteLine("There is no savegame available");
Console.WriteLine("Press enter to continue");
Console.ReadKey();
Introduction();
}
}
#region Engine
private void NextLevelFunction() {
Timepassed();
}
private void Timepassed() {
//timepased based on moves, call at every function start
}
private string GetRadiation() {
string radiation = null;
radiation = Convert.ToString(Radiation);
if (Radiation == 10) {
YouDied("Radiation Poisoning");
}
return radiation;
}
public void RadiationZone(int FalloutLevel) //DO DIS WHERE IF THERE IS LESS FALLOUT THEN LESS RADIATION POISONING
{
if (RadiationSuit == false) {
if (FalloutLevel >= 8) {
Radiation++;
Radiation++;
Radiation++;
} else if (FalloutLevel == 7 || FalloutLevel == 6) {
Radiation++;
Radiation++;
} else if (FalloutLevel == 5 || FalloutLevel == 4 || FalloutLevel == 3) {
Radiation++;
}
}
if (Radiation == 8 || Radiation == 7) {
PlayerHealth--;
} else if (Radiation > 9) {
PlayerHealth--;
PlayerHealth--;
}
if (Radiation == 10) {
YouDied("Radiation Poisoning");
}
}
public string HaveRadiationSuit() {
string have = null;
if (RadiationSuit) {
have = "You have a radiation suit";
} else {
have = "You do not have a radiation suit";
}
return have;
}
private string GetComfort() {
string localComfort = null;
Comfort--;
if (Comfort == 4 || Comfort == 5 || Comfort == 6) {
localComfort = "You are comfortable, but could certainly be more comfterble";
}
if (Comfort <= 0) {
YouDied("Bored to death");
}
return localComfort;
}
private string Hungry() {
string Localhunger = null;
if (PlayerHunger >= 10) {
Localhunger = "You are not hungry";
} else if (PlayerHunger == 9 || PlayerHunger == 8 || PlayerHunger == 7) {
Localhunger = "Could do with a snack";
} else if (PlayerHunger == 6 || PlayerHunger == 5) {
Localhunger = "You are hungry now, but can go on for a while without food for a little while longer";
} else if (PlayerHunger == 4) {
Localhunger = "You are getting quite hungry now, you should probably think about eating";
} else if (PlayerHunger == 3) {
Localhunger = "You are getting really hungry now";
} else if (PlayerHunger == 2) {
Localhunger = "You are getting really hungry now, you cant go on much longer without food";
} else if (PlayerHunger == 1) {
Localhunger = "You are starving now, if you dont eat, you will surely die";
} else {
YouDied("Starvation");
}
return Localhunger;
}
private string Eat() {
if (Food <= 0 || Water <= 0 || PlayerHunger >= 10) {
EatSuccess = false;
} else if (Food > 0 && Water > 0) {
EatSuccess = true;
}
string eatstring = EatString();
return eatstring;
}
private string EatString() {
string EatString = null;
if (EatSuccess) {
EatString = "You have eaten";
PlayerHunger++;
Food--;
Water--;
} else {
EatString = "You do not have enough food to do that";
}
return EatString;
}
public string GetHealth() {
string health = "Your health is at " + PlayerHealth + "/10";
if (PlayerHealth <= 0) {
YouDied("Your health reached 0");
}
return health;
}
public void HungerDown() {
Random rnd = new Random();
int HungerDown = rnd.Next(1, 3);
if (HungerDown == 1) {
PlayerHunger--;
}
return;
}
public void YouDied(string CauseOfDeath) {
Console.BackgroundColor = ConsoleColor.DarkRed;
Console.Clear();
Console.WriteLine("You died");
Console.WriteLine("Cause of death: {0}", CauseOfDeath);
Console.WriteLine("You can try (A)gain, or (Q)uit");
var response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case 'A':
case 'a':
Console.BackgroundColor = ConsoleColor.White;
Introduction();
break;
case 'Q':
case 'q':
Console.WriteLine("Thanks for playing");
Environment.Exit(0);
break;
}
}
#endregion
public void Introduction() {
GetHealth();
Level = "Introduction";
Console.Clear();
Console.WriteLine("Welcome to this game about the boring apocolipse");
Console.WriteLine("In this game you have to make decisions in order to progress though the game");
Console.WriteLine("To load from a previous save press L");
Console.WriteLine("You can press S to save at any point throughout the game");
Console.WriteLine("Do you wish to continue?");
Console.WriteLine();
Console.WriteLine("(C)ontinue (Q)uit (L)oad");
var response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case 'C':
case 'c':
GameStart();
break;
case 'Q':
case 'q':
Console.WriteLine("Thanks for playing");
break;
case 'L':
case 'l':
Load();
break;
case 'S':
case 's':
Save();
Introduction();
break;
}
}
private void GameStart() {
Level = "GameStart";
Console.Clear();
Console.WriteLine("Our story starts in a suburb of New York");
Console.WriteLine("You hear a nuclear siren, and your phone warns you off a possible nuclear strike at your location");
Console.WriteLine("You are faced with a decision to either get to the nuclear bunker, hide in your house or do nothing");
Console.WriteLine();
Console.WriteLine("Neuclear bunker (1) Hide (2) Do nothing (3)");
var response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case '1':
Console.WriteLine("You choose Get to the Bunker");
break;
case '2':
Console.Clear();
Console.WriteLine("You choose Hide");
Console.WriteLine("Enter to continue");
Console.ReadKey();
YouDied("Nuclear annihilation");
break;
case '3':
Console.Clear();
Console.WriteLine("You choose Do Nothing");
Console.WriteLine("Enter to continue");
Console.ReadKey();
YouDied("Nuclear annihilation");
break;
case 'S':
case 's':
Save();
GameStart();
break;
}
HungerDown();
GetHealth();
Eaten:
Console.Clear();
Console.WriteLine("You are now in the Nuclear Bunker");
Console.WriteLine("You have survived the initial nuclear blast you now have to continue to survive");
Console.WriteLine();
Console.WriteLine("You managed to grab {0} food and {1} water before the blast", Food, Water);
Console.WriteLine("F to eat 1 food (your hunger level is now at {0}/10)", PlayerHunger);
Console.WriteLine(Hungry());
Console.WriteLine();
Console.WriteLine("From here, you can go outside and search for supplies, search the fallout bunker for a radiation suit or " +
"rest and wait for the fallout to pass slightly, reducing the chance of radiation poisoning (this will consume 6 hunger)");
Console.WriteLine();
Console.WriteLine("Go outside (1) Search inside (2) Rest and wait (3)");
response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case '1':
Branch_1_1();
break;
case '2':
Branch_2_1();
break;
case '3':
Branch_3_1();
break;
case 'F':
case 'f':
Eat();
goto Eaten;
case 'S':
case 's':
Save();
GameStart();
break;
}
}
private void Branch_1_1() {
Level = "Branch_1_1";
RadiationZone(1); //THIS NEEDS TO CHANGE ONCE U DONE THE THING WITH CALCULATING FALLOUT BASED ON TIME PASSED
HungerDown();
GetHealth();
Eaten:
Console.Clear();
Console.WriteLine("You choose to go outside and search for any possible supplies");
Console.WriteLine("You currently have {0} water {1} food", Water, Food);
Console.WriteLine();
Console.WriteLine("You are outside of the bunker now, it is radioactive out here, your current radioactivity level is {0}/10." +
"The higher it gets, the more dangerous it is. Bad stuff happens when your radioactivity level gains. The longer " +
"you spend outside, the higher it will get. If you have a radiation suit, all radiation and damage will be " +
"negated.", GetRadiation());
Console.WriteLine();
Console.WriteLine(HaveRadiationSuit());
Console.WriteLine(GetHealth());
Console.WriteLine();
Console.WriteLine("F to eat 1 food (your hunger level is now at {0}/10)", PlayerHunger);
Console.WriteLine(Hungry());
Console.WriteLine();
Console.WriteLine("From here, you can search for Food, Water or Comforts to make you more comfortable this will mean that you get less " +
"bored and therefore are less likely to die, your current comfort level is {0}/10, the lower your health the lower your" +
"comfort and a higher chance of death.", Comfort);
Console.WriteLine();
Console.WriteLine("Food (1) Water (2) Comforts (3)");
var response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case '1':
Branch_1_1_1();
break;
case '2':
Branch_1_1_2();
break;
case '3':
Branch_1_1_3();
break;
case 'F':
case 'f':
Eat();
goto Eaten;
case 'S':
case 's':
Save();
Branch_1_1();
break;
}
}
private void Branch_2_1() {
Level = "Branch_2_1";
HungerDown();
GetHealth();
Eaten:
Console.Clear();
Console.WriteLine("You choose to stay inside and search the fallout shelter for a radiation suit");
Console.WriteLine("You currently have {0} water {1} food", Water, Food);
Console.WriteLine();
Console.WriteLine("You wonder the inside of the bunker in search for a radiation suit, this is a very mundane task, you are getting " +
"quite bored, {0}, you should probably try and find comforts when you get out of the bunker.", GetComfort());
Console.WriteLine("You can see a radiation suit in the distance. However it is smotherd in flames and there is no easy way to get it.");
Console.WriteLine();
Console.WriteLine(HaveRadiationSuit());
Console.WriteLine(GetHealth());
Console.WriteLine();
Console.WriteLine("F to eat 1 food (your hunger level is now at {0}/10)", PlayerHunger);
Console.WriteLine(Hungry());
Console.WriteLine();
Console.WriteLine("From here you can try and grab the radiation suit from the fire, try and use the water you have to extinguish" +
"the flames, or disregard the radiation sut and go outside anyway.");
Console.WriteLine();
Console.WriteLine("Go for it (1) Extinguish flames (2) Disregard (3)");
var response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case '1':
Branch_2_1_1();
break;
case '2':
Branch_2_1_2();
break;
case '3':
Branch_1_1();
break;
case 'F':
case 'f':
Eat();
goto Eaten;
case 'S':
case 's':
Save();
Branch_2_1();
break;
}
}
private void Branch_3_1() {
Level = "Branch_3_1";
HungerDown();
GetHealth();
Eaten:
Console.Clear();
Console.WriteLine("You choose to");
Console.WriteLine("You currently have {0} water {1} food", Water, Food);
Console.WriteLine();
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine();
Console.WriteLine(HaveRadiationSuit());
Console.WriteLine(GetHealth());
Console.WriteLine();
Console.WriteLine("F to eat 1 food (your hunger level is now at {0}/10)", PlayerHunger);
Console.WriteLine(Hungry());
Console.WriteLine();
Console.WriteLine("From here you can ");
Console.WriteLine();
Console.WriteLine("Go for it (1) Extinguish flames (2) Disregard (3)");
var response = Console.ReadKey();
Console.WriteLine();
switch (response.KeyChar) {
case '1':
Branch_3_1_1();
break;
case '2':
Branch_3_1_2();
break;
case '3':
Branch_3_1_3();
break;
case 'F':
case 'f':
Eat();
goto Eaten;
case 'S':
case 's':
Save();
Branch_3_1();
break;
}
}
private void Branch_1_1_1() {
Level = "Branch_1_1_1";
HungerDown();
}
private void Branch_1_1_2() {
Level = "Branch_1_1_2";
HungerDown();
}
private void Branch_1_1_3() {
Level = "Branch_1_1_3";
HungerDown();
}
private void Branch_2_1_1() {
Level = "Branch_2_1_1";
HungerDown();
}
private void Branch_2_1_2() {
Level = "Branch_2_1_2";
HungerDown();
}
private void Branch_2_1_3() {
Level = "Branch_2_1_3";
HungerDown();
}
public void Branch_3_1_1() {
Level = "Branch_3_1_1";
HungerDown();
}
public void Branch_3_1_2() {
Level = "Branch_3_1_2";
HungerDown();
}
public void Branch_3_1_3() {
Level = "Branch_3_1_3";
HungerDown();
}
}
}