Objektorientēts stāsts

2007-10-19

Šī stāsta saturs ir truls līdz vājprātam, toties tā forma - eleganta līdz tam pašam vājprātam. Zemāk redzamajā tekstā ir mans pirmais mēģinājums radīt 100% objektorientētu stāstu iekš C++. Šis stāsts ir tāds, ka tev vajadzētu varēt tā saturu uztvert lasot šo stāstu (sākot ar to vietu, kur sākas pamatprogramma - int main(void)). Taču vienlaikus šis stāsts nokompilētā veidā var savu saturu uzrakstīt uz ekrāna (piedāvāju EXE failu Windows lietotājiem, citu operētājsistēmu lietotāji var paši to kompilēt (ja man neuzticies, arī kā Windows lietotājs vari kompilēt pats, es izmantoju Dev-C++ kompilatoru).
Vēl viena piezīme: kā jau datorizētam stāstam pieklājas, arī šajā iespējami dažādi sižeta pavērsieni atkarībā no situācijas (to tu vari redzēt gan stāsta "tekstā", gan atkārtoti palaižot stāsta teksta pierakstīšanu).
Un tātad stāsts:

#include 
#include
#include
#include
#include
using namespace std;

class Story{
public:
Story(string titled,string location){
title=titled;
cout< cout<<"The story takes place in a "< }
void End(){
cout<<"This is the end of our story";
}
private:
string title;
};

class Hero{
public:
Hero(){}
Hero(string name1,string sex1,int money_sum){
name=name1;
sex=sex1;
money=money_sum;
drunk=0;
cout<<"Enters hero "< }
Hero(string sex1){
sex=sex1;
name="";
cout<<"Enters a "< drunk=0;
}
void SetName(string name1){
name=name1;
}
void GiveMoney(Hero person,int amount){
cout< money=money-amount;
}
int HasEnoughMoney(int amount){
if(money cout< return 0;
}
else return 1;
}
int Drunk(){
return drunk;
}
void SetSex(int sex1){
sex=sex1;
}
void PassOut(){
cout< }
void HitWithABrokenBottle(Hero victim){
cout< }
void OrderBeer(Hero beer_from,int amount){
cout< }
void DrinkBeer(){
cout< if(!drunk){
int a=rand()%50;
if(sex=="Woman"&&a>35) drunk=1;
if(sex=="Man"&&a>47) drunk=1;
if(drunk) cout<<"* "< }
}
string Say(string content,Hero to_person){
cout< return content;
}
void Ask(string question,Hero to_person){
cout< }
string Name(){
if(name!="") return name;
else return sex;
}
string Sex(){
return sex;
}
void Undress(Hero person){
cout< }
void MakeOutWith(Hero person){
cout< }
void Notice(Hero person,string feeling){
cout< }
void WakeUp(){
cout< }
void TooDrunkToFuck(){
cout< }
private:
string name;
string sex;
int drunk;
int money;
};
class Barman : public Hero{
public:
Barman(string name1){
SetName(name1);
cout<<"Appears barman "< }
void GiveBeer(Hero beer_to,int amount){
cout< }
void CloseBar(){
cout< }
};
int main(void)
{
srand(time(NULL));
Story NiceStory("A romantic tale of wine and roses","pub");
Hero Peter("Peter","Man",10);
Barman Barman("Barman John");
for(int i=1;i<4;i++){
Peter.OrderBeer(Barman,1);
Peter.GiveMoney(Barman,1);
Barman.GiveBeer(Peter,1);
Peter.DrinkBeer();
}
Hero Chick("Woman");
Peter.Notice(Chick,"lust");
Peter.Ask("What`s your name",Chick);
Chick.Say("Helena",Peter);
Chick.SetName("Helena");
Chick.Ask("And your name?",Peter);
Peter.Say("Peter.",Chick);
Peter.Ask("Do you want a beer?",Chick);
Chick.Say("Sure",Peter);
do{
Peter.OrderBeer(Barman,2);
Peter.GiveMoney(Barman,2);
Barman.GiveBeer(Peter,2);
Peter.DrinkBeer();
Chick.DrinkBeer();
}while(!Chick.Drunk()&&Peter.HasEnoughMoney(2));
Peter.Ask("Wanna have sex?",Chick);
if(Chick.Drunk()){
Chick.Say("Sure!",Peter);
Barman.Say("I have a room for 30 EUR an hour",Peter);
Peter.Say("I live next door, you money grabbing fucker!",Barman);
Barman.HitWithABrokenBottle(Peter);
Peter.PassOut();
}
else{
Chick.Say("No, you pervert!", Peter);
Chick.HitWithABrokenBottle(Peter);
Peter.PassOut();
Barman.Ask("Do you want another beer?",Chick);
Chick.Say("I always want a beer!",Barman);
while(!Chick.Drunk()){
Barman.GiveBeer(Chick,1);
Chick.DrinkBeer();
}
}
Barman.Ask("Wanna have sex?",Chick);
Chick.Say("I`m totally horny",Barman);
Barman.Say("I must close the bar in that case",Chick);
Barman.CloseBar();
Barman.Undress(Chick);
Barman.Undress(Barman);
Barman.MakeOutWith(Chick);
Peter.WakeUp();
Peter.Notice(Barman,"anger");
Peter.HitWithABrokenBottle(Barman);
Barman.PassOut();
Peter.Undress(Peter);
if(!Peter.Drunk()){
Peter.MakeOutWith(Chick);
Chick.Say("I`m tired that you both treat me like an object",Peter);
Chick.HitWithABrokenBottle(Peter);
Peter.PassOut();
}
else{
Peter.TooDrunkToFuck();
Peter.Ask("Shall we drink some more?",Chick);
Chick.Say("Sure!",Peter);
}
NiceStory.End();
getchar();
}