Лабораторные работы (2010) (FunnyQuad1)

Посмотреть архив целиком

Игра – “Веселый квадрат”

Место действия – сетка 6X6.


Поле игры :



Цель – из START добраться до (домика)


Легенда :


  1. Друг -

  2. Враг -

  3. Препятствие -

  4. Лес -


Главный действующий персонаж – Квадрат, бывает в четырех состояниях :

1) Квадрат с полной энергией и настроением --


2) Квадрат с полной энергий, но расстроенный


3) Уставший квадрат, но довольный


4) Уставший и расстроенный


Состояния:

  1. Величина зарядки квадрата – Большая

  2. Препятствие – сверху

  3. - справа

  4. - слева

  5. - снизу

  6. Лес – сверху

  7. –справа

  8. –слева

  9. –снизу

  10. Хороший знакомый - сверху

  11. –справа

  12. -слева

  13. – снизу

  14. Враг – сверху

  15. –справа

  16. –слева

  17. –снизу

  18. Граница – сверху

  19. Справа

  20. Слева

  21. Снизу

  22. Лес?

  23. Друг?

  24. Враг?

  25. Рядом дом

  26. Дом?

  27. Тупик?


Действия:

  1. Пойти – вверх

  2. –вниз

  3. –влево

  4. –вправо

  5. Поднять настроение

  6. Убавить настроение

  7. Поднять энергию

  8. Убавить энергию

  9. Перепрыгнуть -вверх

  10. –вниз

  11. –влево

  12. –вправо

  13. –поздороваться

  14. –пойти в домик

  15. –сдаться

Приоритет хождения квадрата – вверх, вправо, влево, вниз.


Правила игры :

1) Сверху лес. - да

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – пойти вверх


2) Сверху препятствие? – да

Есть куда прыгнуть?- да

Полная энергия? - Да

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – прыгнуть вверх

-уменьшить настроение

-уменьшить энергию


3) Сверху враг? – да

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – пойти вверх


4)Сверху друг? – да

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – пойти вверх

5) Справа лес – да

Сверху лес – нет

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – пойти вправо

6) Справа друг – да

Сверху лес - нет

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – пойти вправо

7) Справа препятствие – да

Сверху друг – нет

Сверху лес - нет

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – прыгнуть вправо

Убавить настроение

Убавить энергию

8)

Сверху враг -да

Сверху друг – нет

сверху препятствие – нет

Сверху лес - нет

В Лесу? - нет

Друг? - нет

Враг? - нет

Рядом дом? - нет

Дом? - нет

Тупик? – нет

Действия – пойти вправо

9) – 12) – описание приоритетов хождения влево

12)-16) – описание приоритетов хождения вниз

17) Лес? - да

Действие – поднять энергию

18) Друг? –да

Поднять настроение

19) враг? – да

Убавить настроение

20) Рядом дом?

Идем в дом

21) В доме?

Конец

22)В тупике?

Конец



Логические отношения :

1) Сверху лес -> !Сверху препятствие, !Сверху Друг, !Сверху Враг

2) Сверху препятствие -> !Сверху Друг ! Сверху Враг

3)Сверху друг - > !Сверху враг

4) Справа лес -> !Справа препятствие !Справа Друг !Справа Враг

5) Справа препятствие -> !справа друг ! справа враг

6) Справа Друг -> !справа враг

7)Снизу лес -> !снизу препятствие !снизу друг ! снизу враг

8) снизу препятствие ->!cнизу друг !снизу враг

9) снизу друг - > !снизу враг

10) Слева лес - !слева препятствие ! слева друг ! слева враг

11) Слева препятствие – ! слева друг ! слева враг

12) слева друг – !слева враг






Программа разрабатывалась на языке с++ в среде BUILDER C++ 6


Приложение :


Реализация программы.


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


#include

#pragma hdrstop


#include "Unit1.h"

#include "windows.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

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

#define USERMESSAGE "MyMessage"

#define YES 1

#define NO -1

#define CONDITIONS 0

#define ACTIONS 1

#define MYTRUE 1

#define MYFALSE 0

#define pause 100

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

//Мы уже встретили объект?

bool dostup = true;

bool sp = true;

//Заголовок окна


//Константы

const int CountW = 4;

const int CountH = 4;

int oldTime;

int newTime;

//Объявление переменных

TForm1 *Form1;

int Map[(CountW + 2)*(CountH + 2)];

//Картинки

Graphics::TBitmap * quad_exellent = new Graphics::TBitmap;

Graphics::TBitmap * quad_wp = new Graphics::TBitmap;

Graphics::TBitmap * quad_wpwn = new Graphics::TBitmap;

Graphics::TBitmap * quad_wn = new Graphics::TBitmap;

Graphics::TBitmap * forest = new Graphics::TBitmap;

Graphics::TBitmap * enemy = new Graphics::TBitmap;

Graphics::TBitmap * mfriend = new Graphics::TBitmap;

Graphics::TBitmap * barier = new Graphics::TBitmap;

Graphics::TBitmap * house = new Graphics::TBitmap;

Graphics::TBitmap * start = new Graphics::TBitmap;

unsigned int OurMessage;

int DoGame(Word WParamHi, Word WParamLo, int LParam);

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


class Quad

{

public:

int x, y;

int nastroenie;

int energy;

void Draw();

int EnergyIsBig();

int NastroenieIsBig();

int PrepUp();

int PrepDown();

int PrepLeft();

int PrepRight();

int ForestUp();

int ForestDown();

int ForestLeft();

int ForestRight();

int FriendUp();

int FriendDown();

int FriendLeft();

int FriendRight();

int EnemyUp();

int EnemyDown();

int EnemyLeft();

int EnemyRight();

int GranUp();

int GranDown();

int GranLeft();

int GranRight();

int IsFriend();

int IsEnemy();

int IsForest();

int NearHouse();

int InHouse();

int Tupic();

void MoveUp();

void MoveDown();

void MoveLeft();

void MoveRight();

void EnergyUp();

void EnergyDown();

void NastrUp();

void NastrDown();

void JumpUp();

void JumpDown();

void JumpLeft();

void JumpRight();

void Hello();

void GoToHouse();

void Finish();

};

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


int Quad::Tupic()

{

if((Map[(y + 1)*(CountW + 2) + x] == 4 || Map[(y)*(CountW + 2) + (x + 1)] == 4)

&& (energy == 0))

{

return true;

}

else if((Map[(y + 1)*(CountW + 2) + x] == 4 || Map[(y)*(CountW + 2) + (x + 1)] == 4) && (

GranUp() && GranRight()))

{

return true;

}

else

return false;

}

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


int Quad::NearHouse()

{

if(Map[(y + 1)*(CountW + 2) + x] == 5 || Map[(y - 1)*(CountW + 2) + x] == 5

|| Map[(y)*(CountW + 2) + (x + 1)] == 5 || Map[(y)*(CountW + 2) + (x - 1)] == 5)

{

ShowMessage("Домик рядом!");

return true;

}

else

{

return false;

}

}

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


int Quad::InHouse()

{

if(Map[(y)*(CountW + 2) + x] == 5)


{

AnsiString strNastroenie;

AnsiString strEnergy;

if(nastroenie == 1)

{

strNastroenie = "весел";

}

else

{

strNastroenie = "расстроен";

}

if(energy == 1)

{

strEnergy = "полон сил";

}

else

{

strEnergy = "устал";

}

ShowMessage("Квадрат в домике, он " + strNastroenie + " и " + strEnergy);

ShowMessage("Ура, я дома!))");

return true;

}

else

{

return false;

}

}

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


void Quad::Finish()

{

ShowMessage("Квадрат пришел в тупик, он рыдает");

}

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


void Quad::GoToHouse()

{

if(Map[(y + 1)*(CountW + 2) + x] == 5)

MoveUp();

else if(Map[(y)*(CountW + 2) + x + 1] == 5)

MoveRight();

}

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


int Quad::NastroenieIsBig()

{

if(nastroenie == 1)

{

return true;

}

else

return false;

}

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


int Quad::EnergyIsBig()

{

if(energy == 1)

return true;

else

return false;

}

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


int Quad::PrepUp()

{

if(Map[(y + 1)*(CountW + 2) + x] == 4)

{

ShowMessage("Наверху препятствие");

return true;

}

else

return false;

}

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


int Quad::PrepDown()

{

if(Map[(y - 1)*(CountW + 2) + x] == 4)

{

ShowMessage("Внизу препятствие");

return true;

}

else

return false;

}

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


int Quad::PrepLeft()

{

if(Map[y*(CountW + 2) + (x - 1)] == 4)

{

ShowMessage("Слева препятствие");


Случайные файлы

Файл
69749.rtf
81336.rtf
8835-1.rtf
25180.rtf
89947.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.