Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Висновок





У ході виконання курсової роботи були вивчені основи програмування мовою С + +. Написання програми сприяло закріпленню теоретичного матеріалу на практиці.

Гравець керує змією за допомогою клавіш-стрілок. При кожній взаємодії з яблуком змія поступово збільшується на одну клітинку. В кожному рівні потрібно з'їсти різну кількість яблук. Коли гравець досяг кінця рівня, програма виводить повідомлення про виграш. Кількість яблук, які потрібно з'їсти наступного рівня, підвищується на один. Коли змія взаємодіє зі стіною, гра закінчується і програма виводить повідомлення про програш. При кожній взаємодії з яблуком, на ігровому полі з'являється нове яблуко. Гра "Змійка" є логічно завершеною грою. Також можливі зміни і удосконалення деяких моментів в геймплеї, такі як мультиплеер і додавання на ігровому полі перешкод.

Програма повністю написана згідно заданому завданню, все задумане в програмі було повністю реалізоване. Проведене тестування програми підтвердило, що програма працює коректно та без помилок.


6. Література

1. Прата С. Язык программирования C++ / C. Прата. Москва: «Издательство ТРИУМФ», 2003. – 172 с.

2. Динман М.И. С++. Освой на примерах. / М.И. Динман. Петербург– БХВ, 2006. – 384 с.

3. Стефан Р. Дэвис – С++ Для чайников / С.Р. Дэвис. Вильямс, 2003. – 336 с.

4. C++ [Електронний ресурс] / Матеріал з Вікіпедії – вільної енциклопедії. – Режим доступу: \www/ URL: http://uk.wikipedia.org/wiki/C++.

5. Романов Е.Л. Си++. От дилетанта до профессионала / Е.Л. Романов. Москва: «Издательство ТРИУМФ», 2014. – 600 с.

6. А. Крупник Изучаем Си / А.Крупник. Питер, 2001. – 233 с.

7. Энтони Уильямс Параллельное программирование на С++ в действии / Э.Уильямс. Москва, 2012. – 672 с.

8. Культин Н.Б. Borland C++ Builder. Основы программирования в Borland C++ Builder. / Н.Б. Культин. – СПб.: БХВ–Петербург, 2003. – 480 с.

9. Коплиен Дж. – Мультипарадигменное проектирование для с++ / Дж. Коплиен. Питер, 2005.– 235 с.

10. Литвиненко Н.А. Технология программирования на С++ / Н.А. Литвиненко. БХВ–Петербург,2010. – 281 с.

11. Макс Шлее Профессиональное программирование на С++ / М.Шеле. БХВ–Петербург, 2010. – 883 с.

12. Оверленд Б. С++ Без страха. / Б. Оверленд. Москва: «Издательство ТРИУМФ», 2005. – 432 с.

13 Либерти Д. Освой самостоятельно С++ за 24 часа, 4–е издание. / Д. Либерти, Д. Хорват. Москва: Издательский дом «Вильямс», 2007. – 448 с.

14 Оверленд Б. С++ Без страха. / Б. Оверленд. Москва: «Издательство ТРИУМФ», 2005. – 432 с.

15 Подбельский В.В. Програмирование на языке Си: Учеб. пособие. – 2–е доп. изд. / В.В. Подбельский, С.С. Фомин. Москва: Финансы и статистика, 2004. – 600 с.

16 Фаронов В. Borland C++ Builder. Учебный курс / В. Фаронов. – М.: Нолидж, 2003. – 580 с.

17 Шилдт Г. С++: руководство для начинающих, 2–е издание. / Г. Шилдт. – М. Пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 672 с.

18 Романов Е.Л. Си++. От дилетанта до профессионала / Е.Л. Романов. Москва: «Издательство ТРИУМФ», 2014. – 600 с.

19 Коплиен Дж. Мультипарадигменное Проектирование для С++ / Дж. Коплиен. Питер, 2005. – 237 с.

20 Шпак З.Я. Програмування мовою С: Навчальний посібник / З.Я. Шпак. Оріяна–Нова, 2006. – 432 с.


 

Додаток А – Текст програми

#include <vcl.h>

#include <iostream>

#include <time.h>

#pragma hdrstop

#pragma hdrstopFlag

 

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

 

 

bool ateFood = false; //їжа

// світ

int world[25][25];

// змінні які відповідають за частини ігрового поля

int east, south, relativeE, relativeS, wrappedE, wrappedS;

// позиції кожного сегменту змійки

int snakeE[650], snakeS[650];

int snakeHeadE, snakeHeadS;

int snakeTailE, snakeTailS;

int snakeLength;

int segment;

int direction, lastDirection, reverseDirection; //напрямок

int w=0; //вінрейт

int maxSize = 25; //максимальний розмір поля

 

 

TForm1 *Form1;

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

 

void music(void) {

Form1->MediaPlayer1->FileName = "fon.mp3";

Form1->MediaPlayer1->Open();

Form1->MediaPlayer1->Play();

}

 

 

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

PlaySound("F:\\Labs\\My Game\\music.wav", NULL, SND_ASYNC|SND_LOOP);

Form1->Timer1->Enabled = false;

}

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

 

void render(void) { //формування поля

for (east=0; east<maxSize; east++) {

for (south=0; south<maxSize; south++) {

switch (world[east][south]) {

case 0: //фон поля

Form1->Canvas->Pen->Color=clBlack;

Form1->Canvas->Brush->Color=clBlack;

Form1->Canvas->Rectangle

(east*20,south*20,east*20+20,south*20+20);

break;

case 1: //колір змії

Form1->Canvas->Pen->Color=clGreen;

Form1->Canvas->Brush->Color=clGreen;

Form1->Canvas->Rectangle

(east*20,south*20,east*20+20,south*20+20);

break;

case 2: //колір їжі

Form1->Canvas->Pen->Color=clRed;

Form1->Canvas->Brush->Color=clRed;

Form1->Canvas->Ellipse

(east*20,south*20,east*20+20,south*20+20);

break;

case 3: //колір отрави

Form1->Canvas->Pen->Color=clGray;

Form1->Canvas->Brush->Color=clGray;

Form1->Canvas->Rectangle

(east*20,south*20,east*20+20,south*20+20);

break;

}

}

}

}

 

void clearAll (void) { //очистка поля

for (east=0; east<maxSize; east++) {

for (south=0; south<maxSize; south++) {

world[east][south]=false;

}

}

for (int i = 0; i < 650; i++) {

snakeE[i] = -1;

snakeS[i] = -1;

}

render();

}

 

 

void gameOver (void) { //"Кінець гри"

Form1->Timer1->Enabled = false;

Form1->MediaPlayer1->Stop();

Form1->Button1->Caption="Новая игра";

PlaySound("F:\\Labs\\My Game\\go.wav", NULL, SND_ASYNC);

ShowMessage("Игра окончена. Размер змеи: "+IntToStr(snakeLength));

w=0;

}

 

void makeRandomFood (void) { //розстановка їжі

for (int i = 0; i < 20+w; i++) {

world[random(25)][random(25)] = 2;

}

}

 

void makeRandomPoison (void) { //розстановка стін

for (int i = 0; i < 20; i++) {

world[random(25)][random(25)] = 3;

}

}

 

void Exit(void) { //Вихід із програми

Application->Terminate();

}

 

void Win(void) { //Виграш

Form1->Timer1->Enabled = false;

Form1->MediaPlayer1->Stop();

Form1->Button1->Caption="Новый уровень";

PlaySound("F:\\Labs\\My Game\\win.wav", NULL, SND_ASYNC);

ShowMessage("Поздравляем!!! Вы прошли " + IntToStr(w)+ " уровень! Нажмите Новый уровень, чтобы перейти на новый уровень.");

}

 

 

void makeRandomSnake (void) { //установка змійки

Randomize();

// розпочати з направлення вверх чи вниз

lastDirection = 1;

int flip = random(2);

switch (flip) {

case 0:

direction = 0;

break;

case 1:

direction = 2;

break;

}

// розпочати з випадкової позиції голови

snakeHeadE = 1 + random(15);

snakeHeadS = 1 + random(23);

// встановлення розміру змійки

snakeLength = 3;

// розташувати змійку горизонтально

for (int span = 0; span < snakeLength; span++) {

world[snakeHeadE + span][snakeHeadS] = true;

snakeE[span] = snakeHeadE + span;

snakeS[span] = snakeHeadS;

}

snakeTailE = snakeHeadE + snakeLength - 1;

snakeTailS = snakeHeadS;

Form1->Timer1->Enabled = true;

}

 

 

void step (void) {

// куди буде переміщатися змійка

switch (direction) {

case 0: // вверх

snakeHeadS--;

if (snakeHeadS < 0) snakeHeadS = 24;

break;

case 1: // вправо

snakeHeadE++;

if (snakeHeadE > 24) snakeHeadE = 0;

break;

case 2: // вниз

snakeHeadS++;

if (snakeHeadS > 24) snakeHeadS = 0;

break;

case 3: // вліво

snakeHeadE--;

if (snakeHeadE <0) snakeHeadE = 24;

break;

}

 

 

// якщо з'їсти яд або себе, то гра закінчується

if (world[snakeHeadE][snakeHeadS] == 3) gameOver();

if (world[snakeHeadE][snakeHeadS] == 1) gameOver();

// якщо з'їсти їжу, змійка збільшується

if (world[snakeHeadE][snakeHeadS] == 2) ateFood = true;

world[snakeHeadE][snakeHeadS] = true;

// розміщення кожного сегменту змійки...

for (segment = snakeLength + 1; segment > 0; segment --) {

snakeE[segment] = snakeE[segment - 1];

snakeS[segment] = snakeS[segment - 1];

}

//... і її голови

snakeE[segment] = snakeHeadE;

snakeS[segment] = snakeHeadS;

// видалити останній сегмент змії, якщо їжа не була з'їдена

if (!ateFood) { //якщо не з'їсти їжу

snakeTailE = snakeE[snakeLength ];

snakeTailS = snakeS[snakeLength ];

}

if (ateFood) { //якщо з'їсти їжу

snakeLength++; //розмір збільшиться

ateFood = false; //їжа зникне з поля

PlaySound("F:\\Labs\\My Game\\eat.wav", NULL, SND_ASYNC);

}

lastDirection = direction; // переміщення змійки

world[snakeTailE][snakeTailS] = false;

render();

// рахування набраних очків, очки відповідають розміру змійки, тобто початкова кількість очків - 3

Form1->EditLength->Text = snakeLength;

if (snakeLength>21+w) {w=w+1; Win();}

}

 

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

PlaySound("F:\\Labs\\My Game\\start.wav", NULL, SND_ASYNC);

music();

Form1->Timer1->Enabled = true;

clearAll();

makeRandomFood();

makeRandomPoison();

makeRandomSnake();

render();

EditLength->SetFocus();

}

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

 

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Exit();

}

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

 

void __fastcall TForm1::N3Click(TObject *Sender)

{

Exit();

}

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

 

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

step();

Application->ProcessMessages();

}

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

 

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,

TShiftState Shift)

{

if (Key == VK_LEFT) direction = 3;

if (Key == VK_RIGHT) direction = 1;

if (Key == VK_UP) direction = 0;

if (Key == VK_DOWN) direction = 2;

}

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

 

void __fastcall TForm1::N7Click(TObject *Sender)

{

ShowMessage("Created by DimonsTools" "\n [email protected]" "\n 2014 БЧКІ 1-13" "\n @Все права защищены конгломератом беременных бегемотов");

}

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

 

void __fastcall TForm1::N5Click(TObject *Sender)

{

Form1->Timer1->Enabled = false;

}

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

 

void __fastcall TForm1::N6Click(TObject *Sender)

{

Form1->Timer1->Enabled = true;

}

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

 

void __fastcall TForm1::N2Click(TObject *Sender)

{

PlaySound("F:\\Labs\\My Game\\start.wav", NULL, SND_ASYNC);

music();

Timer1->Enabled =!Timer1->Enabled;

clearAll();

makeRandomFood();

makeRandomPoison();

makeRandomSnake();

render();

}

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


 

Додаток Б – БЛОК-СХЕМИ

Блок схема функції step.

 

 

Блок схема функції render


 

Блок схема функції makeRandomSnake

 

 

Date: 2015-11-14; view: 593; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию