Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) Martian Cafe Tuinema Tycoon source code (version 1.0)

 

Martian Cafe Tuinema Tycoon version 1.0 source code.

 

Operating system: Windows XP

IDE: C++ Builder 6.0 Enterprise Edition

Project type: GUI application

Compiler: supplied with C++ Builder 6.0 Enterprise Edition

Libraries used:

 

 

 

 

 

MCT1.cpp

 

//---------------------------------------------------------------------------
/*
  Martian Cafe Tuinema Tycoon, bartender game
  Copyright (C) 2005  Joost van den Bogaart

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
// From http://www.richelbilderbeek.nl
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "MCT1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

int a[24][4];  //array met info over alle aliens
int b=0;       //array met welk veld hij laat zien:
                       // 0 = veld met bar
                       // 1 = veld met iets anders
int c[10][2];  //array met glazen
int aantalglazen=0; //aantal glazen op dienblad
int dwijlorkest=0; //welk dwijlorkestplaatje
int drinkssold=0;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Plaatjes inladen:
BackgroundImage->Picture->LoadFromFile("Background1.bmp");
ArrowImage->Picture->LoadFromFile("Arrow.bmp"); ArrowImage->Left=10; ArrowImage->Top=140;
L0Image->Picture->LoadFromFile("L0.bmp");
L1Image->Picture->LoadFromFile("L1.bmp");
L2Image->Picture->LoadFromFile("L2.bmp");
R0Image->Picture->LoadFromFile("R0.bmp");
R1Image->Picture->LoadFromFile("R1.bmp");
R2Image->Picture->LoadFromFile("R2.bmp");
ItemImage->Picture->LoadFromFile("Bar.bmp");
StaffImage->Picture->LoadFromFile("BarMan.bmp");
        ItemImage->Left=552; ItemImage->Top=312;
        StaffImage->Left=650; StaffImage->Top=310,
GlasImage->Picture->LoadFromFile("Glas.bmp");
DienbladImage->Picture->LoadFromFile("Dienblad.bmp");
OrkestImage1->Picture->LoadFromFile("Band1.bmp");
OrkestImage2->Picture->LoadFromFile("Band2.bmp");
WallImage->Picture->LoadFromFile("Wall.bmp");


//Belangrijke waarden inladen in array a:
//0=left, 1=top, 2=status voor veld 1 en 3=voor veld 2:
        //0 = plek leeg,
        //1 = bezet maar geen bier,
        //2 = drinkende.
//linker aliens
a[0][0]=257;  a[0][1]=297;   a[0][2]=0;   a[0][3]=0;
a[1][0]=217;  a[1][1]=337;   a[1][2]=0;   a[1][3]=0;
a[2][0]=421;  a[2][1]=298;   a[2][2]=0;   a[2][3]=0;
a[3][0]=381;  a[3][1]=338;   a[3][2]=0;   a[3][3]=0;
a[4][0]=127;  a[4][1]=425;   a[4][2]=0;   a[4][3]=0;
a[5][0]=87;   a[5][1]=465;   a[5][2]=0;   a[5][3]=0;
a[6][0]=278;  a[6][1]=428;   a[6][2]=0;   a[6][3]=0;
a[7][0]=237;  a[7][1]=469;   a[7][2]=0;   a[7][3]=0;
a[8][0]=424;  a[8][1]=430;   a[8][2]=0;   a[8][3]=0;
a[9][0]=384;  a[9][1]=470;   a[9][2]=0;   a[9][3]=0;
a[10][0]=592; a[10][1]=430;  a[10][2]=0;  a[10][3]=0;
a[11][0]=552; a[11][1]=470;  a[11][2]=0;  a[11][3]=0;
//rechter aliens
a[12][0]=315;  a[12][1]=289;   a[12][2]=0;  a[12][3]=0;
a[13][0]=270;  a[13][1]=334;   a[13][2]=0;  a[13][3]=0;
a[14][0]=477;  a[14][1]=293;   a[14][2]=0;  a[14][3]=0;
a[15][0]=436;  a[15][1]=333;   a[15][2]=0;  a[15][3]=0;
a[16][0]=188;  a[16][1]=414;   a[16][2]=0;  a[16][3]=0;
a[17][0]=145;   a[17][1]=457;   a[17][2]=0; a[17][3]=0;
a[18][0]=339;  a[18][1]=417;   a[18][2]=0;  a[18][3]=0;
a[19][0]=295;  a[19][1]=461;   a[19][2]=0;  a[19][3]=0;
a[20][0]=494;  a[20][1]=410;   a[20][2]=0;  a[20][3]=0;
a[21][0]=447;  a[21][1]=457;   a[21][2]=0;  a[21][3]=0;
a[22][0]=655; a[22][1]=417;  a[22][2]=0;    a[22][3]=0;
a[23][0]=615; a[23][1]=457;  a[23][2]=0;    a[23][3]=0;

//Glazen
//c[x][0]=left, top is altijd 360, [1]=of het glas er staat...
for (int a=0; a<10; a++)
        {
        c[a][0]=768-a*16;
        c[a][1]=0;
        }

//AlienGrid->Cells[0][0]=257; AlienGrid->Cells[0][1]=297;
//AlienGrid->Cells[0][0]=257; AlienGrid->Cells[0][1]=257;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::BewegingstimerTimer(TObject *Sender)
{

//Neerzetten met double buffering:
   //achtergrond
   ImageCanvas->Picture=BackgroundImage->Picture;

   //musica
   Beep(random(500),500);

   //staff laten bewegen als barman
   if (b==0)
        {
           StaffImage->Left=StaffImage->Left+random(50)-25;
                if (StaffImage->Left<600) StaffImage->Left=600;
                if (StaffImage->Left>700) StaffImage->Left=700;
                ImageCanvas->Canvas->Draw(StaffImage->Left,StaffImage->Top,StaffImage->Picture->Graphic);
                ImageCanvas->Canvas->Draw(ItemImage->Left,ItemImage->Top,ItemImage->Picture->Graphic);
        }
   else   //het dwijlorkest
        {
           switch (dwijlorkest)
                {
                case 0:
                  ImageCanvas->Canvas->Draw(524,100,OrkestImage1->Picture->Graphic);
                  dwijlorkest=1;
                  break;
                case 1:
                  ImageCanvas->Canvas->Draw(525,100,OrkestImage2->Picture->Graphic);
                  dwijlorkest=0;
                  break;
                }
        }

   //dienblad:
   ImageCanvas->Canvas->Draw(10,140,ArrowImage->Picture->Graphic);
   ImageCanvas->Canvas->Draw(8,80,DienbladImage->Picture->Graphic);
   for (int t=0; t<aantalglazen+1; t++)
        {
         switch (t)
                {
                 case 0:
                   break;
                 case 1:
                   ImageCanvas->Canvas->Draw(48,80,GlasImage->Picture->Graphic);
                   break;
                 case 2:
                   ImageCanvas->Canvas->Draw(63,82,GlasImage->Picture->Graphic);
                   break;
                 case 3:
                   ImageCanvas->Canvas->Draw(28,84,GlasImage->Picture->Graphic);
                   break;
                 case 4:
                   ImageCanvas->Canvas->Draw(14,94,GlasImage->Picture->Graphic);
                   break;
                 case 5:
                   ImageCanvas->Canvas->Draw(30,94,GlasImage->Picture->Graphic);
                   break;
                 case 6:
                   ImageCanvas->Canvas->Draw(47,89,GlasImage->Picture->Graphic);
                   break;
                 case 7:
                   ImageCanvas->Canvas->Draw(61,90,GlasImage->Picture->Graphic);
                   break;
                 case 8:
                   ImageCanvas->Canvas->Draw(56,96,GlasImage->Picture->Graphic);
                   break;
                 case 9:
                   ImageCanvas->Canvas->Draw(88,88,GlasImage->Picture->Graphic);
                   break;
                 case 10:
                   ImageCanvas->Canvas->Draw(90,95,GlasImage->Picture->Graphic);
                   break;
                 case 11:
                   ImageCanvas->Canvas->Draw(74,95,GlasImage->Picture->Graphic);
                   break;
                }
        }


   //de glazen vullen:
   if(random(3)==1) c[random(10)][1]=1;     //kans 1op30;

   //de glazen tekenen als de bar er is:
   if (b==0)
        {
           for (int we=0; we<10; we++)
                {
                switch (c[we][1])
                        {
                        case 0:
                           break;
                        case 1:
                           ImageCanvas->Canvas->Draw(c[we][0],360,GlasImage->Picture->Graphic);
                           break;
                        }
                }
        }//end glazenifstatement

   //Linker Aliens
   for (int we=0; we<12; we++)  //waar tekent hij ze?
       {
       switch (a[we][2+b])        //wat doen ze? +b=voor veld 2
          {
          case 0: //leeg
            break;
          case 1: //geen glas -snik-
            ImageCanvas->Canvas->Draw(a[we][0],a[we][1],L0Image->Picture->Graphic);
            break;
          case 2: //wel glas, al dan niet drinken
            switch (random(2))
                {
                case 0:
                ImageCanvas->Canvas->Draw(a[we][0],a[we][1],L2Image->Picture->Graphic);
                break;
                case 1:
                ImageCanvas->Canvas->Draw(a[we][0],a[we][1],L1Image->Picture->Graphic);
                break;
                }
            break;
          }
       }
   //Rechter Aliens
   for (int we=12; we<24; we++)  //waar tekent hij ze?
       {
       switch (a[we][2+b])        //wat doen ze?   //b voor veld 2
          {
          case 0: //leeg
            break;
          case 1: //geen glas -snik-
            ImageCanvas->Canvas->Draw(a[we][0],a[we][1],R0Image->Picture->Graphic);
            break;
          case 2: //wel glas, al dan niet drinken
            switch (random(2))
                {
                case 0:
                ImageCanvas->Canvas->Draw(a[we][0],a[we][1],R2Image->Picture->Graphic);
                break;
                case 1:
                ImageCanvas->Canvas->Draw(a[we][0],a[we][1],R1Image->Picture->Graphic);
                break;
                }
            break;
          }
       }


//de muur:
ImageCanvas->Canvas->Draw(673,124,WallImage->Picture->Graphic);

//klaar
Form1->Canvas->Draw(0,0,ImageCanvas->Picture->Graphic);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ArrowImageClick(TObject *Sender)
{
//Ander veld inladen:
if (b==0) //nu veld2 met iets anders tonen
        {
        b = 1;
        BackgroundImage->Picture->LoadFromFile("Background2.bmp");
        }
else    // veld met bar tonen
        {
        b = 0;
        BackgroundImage->Picture->LoadFromFile("Background1.bmp");
        ItemImage->Picture->LoadFromFile("Bar.bmp");
        ItemImage->Left=552; ItemImage->Top=312;
        StaffImage->Left=650; StaffImage->Top=310,
        StaffImage->Picture->LoadFromFile("BarMan.bmp");
        }

//randomizeren aliens:
//lege plekken moeten misschien gevuld, aliens met leeg glas moeten misschien weg,
//drinkende aliens moeten misschien weer droog.
for (int we=0; we<24; we++)
      {
      //vullen lege plekken:
      if (a[we][2+b]==0)  //veld met alieninfo
          {
          a[we][2+b]=random(2);  //wordt misschien 1, dat is alien met leeg glas
          }
      //weghalen aliens met leeg glas na vullen lege plekken om te voorkomen dat de tent te snel volloopt!
      if (a[we][2+b]==1)
          {
          a[we][2+b]=random(2);  //wordt misschien 0, dat is leeg
          }
      // en de volle glazen gaan ooit leeg
      if (a[we][2+b]==2)
          {
          if (random(2)==1)
          a[we][2+b]=random(2)+1;  //wordt misschien 1, dat is leeg, kans 1 op 4
          }
      }



}
//---------------------------------------------------------------------------



void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
//Aliens bier geven:
//Bepalen welke alien het is op basis van de volgende gegevens:
        //a[we][0] (left) +7-27 voor L en +21-44 voor R
        //a[we][1] (top) +18-53 voor L en +20-61 voor R
for (int we=0; we<12; we++)   //de linker aliens...
        {
        if (X>a[we][0]+7&&X<a[we][0]+27)
        if (Y>a[we][1]+18&&Y<a[we][1]+53)
        if (aantalglazen>0)
        if (a[we][2+b]==1)
                {
                a[we][2+b]=2;
                aantalglazen=aantalglazen-1;
                drinkssold++;
                DrinkLabel->Caption=drinkssold;
                }
        }
for (int we=12; we<24; we++)   //de rechter aliens...
        {
        if (X>a[we][0]+21&&X<a[we][0]+44)
        if (Y>a[we][1]+20&&Y<a[we][1]+61)
        if (aantalglazen>0)
        if (a[we][2+b]==1)
                {
                a[we][2+b]=2;
                aantalglazen=aantalglazen-1;
                drinkssold++;
                DrinkLabel->Caption=drinkssold;
                }
        }


//glazen pakken
if (b==0)
        {
        for (int we=0; we<10; we++)   //de glazen.
            {
            if (X>c[we][0]&&X<c[we][0]+15)
            if (Y>360&&Y<380)
            if (c[we][1]==1&&aantalglazen<11)  //niet meer dan 11 glazen op dienblad
                {
                aantalglazen++;   //glas erbij zetten
                c[we][1]=0;       //van de bar af;
                }
            }
        }

   //de glazen tekenen als de bar er is:
   if (b==0)
        {
           for (int we=0; we<10; we++)
                {
                switch (c[we][1])
                        {
                        case 0:
                           break;
                        case 1:
                           ImageCanvas->Canvas->Draw(c[we][0],360,GlasImage->Picture->Graphic);
                           break;
                        }
                }
        }//end glazenifstatement

}
//---------------------------------------------------------------------------



 

 

 

 

 

MCT1.h

 

//---------------------------------------------------------------------------
/*
  Martian Cafe Tuinema Tycoon, bartender game
  Copyright (C) 2005  Joost van den Bogaart

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
// From http://www.richelbilderbeek.nl
//---------------------------------------------------------------------------
#ifndef MCT1H
#define MCT1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Grids.hpp>
#include <Graphics.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
        TImage *BackgroundImage;
        TImage *L0Image;
        TImage *R0Image;
        TTimer *Bewegingstimer;
        TImage *ImageCanvas;
        TImage *L1Image;
        TImage *L2Image;
        TImage *R1Image;
        TImage *R2Image;
        TImage *ArrowImage;
        TImage *ItemImage;
        TImage *StaffImage;
        TImage *GlasImage;
        TImage *DienbladImage;
        TImage *OrkestImage1;
        TImage *OrkestImage2;
        TImage *WallImage;
        TPanel *Panel1;
        TLabel *DrinkLabel;
        TLabel *DrinkLabel2;
        TLabel *Label1;
        TLabel *Label2;
        TPanel *Panel2;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall BewegingstimerTimer(TObject *Sender);
        void __fastcall ArrowImageClick(TObject *Sender);
        void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private: // User declarations
public: // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

 

 

 

 

 

MCTTycoon.cpp

 

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("MCT1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Application->Title = "MCTT";
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}
//---------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict