на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Разработка приложения, представляющего собой компьютерную игру "Змейка"
писание функций.

//Функция разброски яблок

void PlusJabloko(Game &g){}

1.Процесс….int x,y,i;

Int n=g.gaduka.pCount;

2.Заводим цикл do while ,в котором задаем координаты объекта- яблоко

x = rand() % 56+3; //

y = rand() % 19+3; //кординаты яблока

3.проверяем объект-яблоко,попало ли оно на объект-змейку.

4. Если попало->break;

5.Если все нормально,запоминаем позицию объекта-яблоко

6.переносим курсор в эту позицию

7.присваиваем цвет объкту-яблоко

8.рисуем объект-яблоко-> символом 4(5,6)

printf("%c", 6); //рисуем яблоко каким хотим символом

// Функция старта змейки ее координат и скорости

void skorostGame(Game &g){}

1.задаем точки-размер объека-змейка

2.когда создали-запоминам позицию

3.задаем скорость передвижения объекта-змейки

4.рисуем объект-яблоко

//Функция которая двигает и рисует

int Move(Game &g){}

1.вводим координаты головы объекта- змейка

2. вводим координаты хвоста объекта- змейка

3.проверяем следующую точку по направлению.

4.проверяем объект-змейка и объект- стенка, не наехал ли объект-змейка на объект-стенка

-если да-то выход

-если нет, то продолжаем

5.проверяем объект-змейка саму на себя ,не наехали на себя

-если да - то конец

-если нет - то продолжаем

6.при создании объекта- змейка перекомпилируем змейку путем увеличения ее длины на одну точку

7.появляется новый массив, больший на 1-цу

8.при съедании объекта-яблока -закрашиваем его в цвет змейки

9.закрашиваем хвостик змеи в зеленый цвет

10.закрашиваем курсор в белый цвет(голова змейки)

Цвета.

Экранные объекты можно закрашивать разными цветами .В объекте могут присутствовать два цвета- внутренний и цвет контура.

Цвета кодируются цифрами:

enum ConsoleColor

{

Pink = 0,

Blue = 1,

Green = 2,

Cyan = 3,

Red = 4,

Magenta = 5,

Brown = 6,

LightGray = 7,

DarkGray = 8,

LightBlue = 9,

LightGreen = 10,

LightCyan = 11,

LightRed = 12,

LightMagenta = 13,

Yellow = 14,

White = 15

Если значение кода задать большим 7,будет использован остаток от его деления на 7.

При создании экранных объектов по умолчанию происходит следующее:

-информационные рамки располагаются вертикально друг под другом в правой части экрана, остальные объекты размещаются в точке с координатами(0,0)

-все объекты создаются белыми с черным контуром.

Структуры:

struct Zmeja // структура змейка

{ COORD *t; //точки

int PCount; //количество яблок

};

enum uprawlenie{LEFT,UP,RIGHT,DOWN}; //направление змейки

struct Game //даные-точности: змейки, яблок, передвижение по X и Y, задержка, направление

{

Zmeja gaduka; //змейка

COORD jabloko; //яблоко

int dx,dy, //передвижение

pause; //задержка

int nap; //направление

};

Сообщения.

функция

координаты

сообщения

Void Level()

GotoXY(10,10)

GotoXY(10,11)

<<"Wu nikogda ne wuigraete "<<endl;

<<"eslu ne bydete bdutelnu!!!"<<endl;

Void ZmejaStart()

GotoXY(10,15)

<<"Soberite 75 Jablok "<<endl;

Void STENA_2()

GotoXY(20,0)

GotoXY(64,2)

GotoXY(64,3)

GotoXY(64,4)

GotoXY(64,5)

GotoXY(64,7)

GotoXY(64,8)

GotoXY(64,9)

GotoXY(64,10)

GotoXY(64,11)

GotoXY(64,13)

GotoXY(64,14)

GotoXY(64,15)

GotoXY(64,16)

GotoXY(2,2)-(2,23)

GotoXY(61,3)-(61,23)

<< "Igra \"Zmejka\" Maiko Ekaterini" <<endl;

<< "Danue:" << endl ;

<< "Jablok:0" << endl ;

<< "Dlina:3"<< endl;

<< "Speed:0" << endl;

<< "Uprawlenie:" << endl;

<< "Esc:Wuxod" << endl;

<< "P:Pause" << endl;

<<"S:Start" << endl;

<<"L:Level" << endl;

<<":Wwerx"<<endl;

<<":Wniz"<<endl;

<<":Wlewo"<<endl;

<<":Wprawo"<<endl;

printf("*");

printf("*");

Void main()

GotoXY(15,1)

GotoXY(15,6)

GotoXY(15,7)

GotoXY(23,1)

<< "Wu wuigrali(maladec!!!)" << endl;

printf( "\n\t\t\t" );

printf( "\n\t\t\t" );

printf("Wu proigrali(xa-xa-xa!!!)\n\n\t\t\t");

Входные параметры:

1.установка позиции курсора х,у;

void GotoXY(int X, int Y)

{

COORD coord = { X, Y };

SetConsoleCursorPosition(hStdOut, coord);

}

2. Структура объекта - змейка

struct Zmeja // структура змейка

{

COORD *t; //точки

int PCount; //количество яблок

};

3. даные-точности: змейки, яблок, передвижение по X и Y

struct Game задержка, направление

{

Zmeja gaduka; //змейка

COORD jabloko; //яблоко

int dx,dy, //передвижение

pause; //задержка

int nap; //направление

};

Выходные параметры:

1.Если выиграл

GotoXY(15,1); cout << "Wu wuigrali(maladec!!!)" << endl;

GotoXY(15,6);printf( "\n\t\t\t" );

GotoXY(15,7);printf( "\n\t\t\t" );

getch();

getch();

getch();

getch();

getch();

return;

2.Если проиграл

case KONEC:

GotoXY(23,1); printf("Wu proigrali(xa-xa-xa!!!)\n\n\t\t\t");

getch();

return;

break;

5.Исходный текст программы С++

Разработка приложения, представляющего собой компьютерную игру «Змейка».

#include <iostream> //стандартная библиотека

#include <time.h> //случайные числа

#include <stdio.h> //для printf

#include <windows.h> // для HANDLE, курсора, цвета

#include <conio.h> //для kbhit

#include <math.h>

#include <io.h>

#include <iostream>

#include <fcntl.h>

#include <string.h>

#include "stdafx.h"

#include <math.h> // Описания математических функций

#include <stdlib.h> // Описания функций malloc и free

using namespace std;

HANDLE hConsole;

//HANDLE hStdout, hStdin;

HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

void GotoXY(int X, int Y)

{

COORD coord = { X, Y };

SetConsoleCursorPosition(hStdOut, coord);

}

//Цвет

enum ConsoleColor

{

Pink = 0,

Blue = 1,

Green = 2,

Cyan = 3,

Red = 4,

Magenta = 5,

Brown = 6,

LightGray = 7,

DarkGray = 8,

LightBlue = 9,

LightGreen = 10,

LightCyan = 11,

LightRed = 12,

LightMagenta = 13,

Yellow = 14,

White = 15

};

void SetColor(ConsoleColor text, ConsoleColor background)

text));

struct Zmeja // структура змейка

{

COORD *t; //точки

int PCount; //количество яблок

};

enum uprawlenie{LEFT,UP,RIGHT,DOWN}; //направление змейки

struct Game //даные-точности: змейки, яблок, передвижение по X и Y, задержка, направление

{

Zmeja gaduka; //змейка

COORD jabloko; //яблоко

int dx,dy, //передвижение

pause; //задержка

int nap; //направление

};

//Функция разброски яблок

void PlusJabloko(Game &g)

{

int i,x,y;

int n = g.gaduka.PCount;

do

{

x = rand() % 56+3; //

y = rand() % 19+3; //кординаты яблока

for(i = 0; i < n; i++)

{

if(x == g.gaduka.t[i].X && y == g.gaduka.t[i].Y) // проверка чтоб яблоко не бросить на змею

break;

}

}

while(i < n);

g.jabloko.X = x; //

g.jabloko.Y = y; //запоминаем позицию яблока

SetConsoleCursorPosition(hConsole, g.jabloko); //переносим курсор в эту позицию

SetConsoleTextAttribute(hConsole,0x0c); //цвет яблока

printf("%c", 6); //рисуем яблоко каким хотим символом

}

// Функцыя старта змейки ее координат и скорости

void skorostGame(Game &g)

{

system("cls");

g.gaduka.PCount = 3; //сколько точек в змейки

g.gaduka.t = new COORD [3];//создали точки

for(int i = 0; i < 3; i++)

{

g.gaduka.t[i].X = 20 + i;

g.gaduka.t[i].Y = 20;

}

g.dx = 1;

g.dy = 0;

g.pause = 100;//скорость передвижение змеи

PlusJabloko(g);//рисуем яблока

}

void Level()

{

GotoXY(10,10);cout <<"Wu nikogda ne wuigraete "<<endl;

GotoXY(10,11);cout <<"eslu ne bydete bdutelnu!!!"<<endl;

}

void ZmejaStart()

{

GotoXY(10,15);cout <<"Soberite 75 Jablok "<<endl;

}

void STENA_2()

{

SetColor(LightBlue , Pink);GotoXY(20,0);cout << "Igra \"Zmejka\" Maiko Ekaterini" <<endl;

GotoXY(64,2);cout << "Danue:" << endl ;

GotoXY(64,3);cout << "Jablok:0" << endl ;

GotoXY(64,4); cout << "Dlina:3"<< endl;

GotoXY(64,5); cout << "Speed:0" << endl;

GotoXY(64,7); cout << "Uprawlenie:" << endl;

GotoXY(64,8); cout << "Esc:Wuxod" << endl;

GotoXY(64,9); cout << "P:Pause" << endl;

GotoXY(64,10); cout <<"S:Start" << endl;

GotoXY(64,11); cout <<"L:Level" << endl;

GotoXY(64,13);printf("%c",24);cout <<":Wwerx"<<endl;

GotoXY(64,14);printf("%c",25);cout<<":Wniz"<<endl;

GotoXY(64,15);printf("%c",27);cout<<":Wlewo"<<endl;

GotoXY(64,16);printf("%c",26);cout<<":Wprawo"<<endl;

{

SetColor(LightMagenta , Pink);

GotoXY(2,2);

int m = 0;

for(m = 0; m < 60; m++)

{

printf("*");

}

}

{

GotoXY(2,24);

int m = 0;

for(m = 0; m < 60;m++)

{

printf("*");

}

}

{

GotoXY(2,3); cout << "*"<<endl;

GotoXY(2,4); cout << "*"<<endl;

GotoXY(2,5); cout << "*"<<endl;

GotoXY(2,6); cout << "*"<<endl;

GotoXY(2,7); cout << "*"<<endl;

GotoXY(2,8); cout << "*"<<endl;

GotoXY(2,9); cout << "*"<<endl;

GotoXY(2,10); cout << "*"<<endl;

GotoXY(2,11); cout << "*"<<endl;

GotoXY(2,12); cout << "*"<<endl;

GotoXY(2,13); cout << "*"<<endl;

GotoXY(2,14); cout << "*"<<endl;

GotoXY(2,15); cout << "*"<<endl;

GotoXY(2,16); cout << "*"<<endl;

GotoXY(2,17); cout << "*"<<endl;

GotoXY(2,18); cout << "*"<<endl;

GotoXY(2,19); cout << "*"<<endl;

GotoXY(2,20); cout << "*"<<endl;

GotoXY(2,21); cout << "*"<<endl;

GotoXY(2,22); cout << "*"<<endl;

GotoXY(2,23); cout << "*"<<endl;

}

{

GotoXY(61,3); cout << "*"<<endl;

GotoXY(61,4); cout << "*"<<endl;

GotoXY(61,5); cout << "*"<<endl;

GotoXY(61,6); cout << "*"<<endl;

GotoXY(61,7); cout << "*"<<endl;

GotoXY(61,8); cout << "*"<<endl;

GotoXY(61,9); cout << "*"<<endl;

GotoXY(61,10); cout << "*"<<endl;

GotoXY(61,11); cout << "*"<<endl;

GotoXY(61,12); cout << "*"<<endl;

GotoXY(61,13); cout << "*"<<endl;

GotoXY(61,14); cout << "*"<<endl;

GotoXY(61,15); cout << "*"<<endl;

GotoXY(61,16); cout << "*"<<endl;

GotoXY(61,17); cout << "*"<<endl;

GotoXY(61,18); cout << "*"<<endl;

GotoXY(61,19); cout << "*"<<endl;

GotoXY(61,20); cout << "*"<<endl;

GotoXY(61,21); cout << "*"<<endl;

GotoXY(61,22); cout << "*"<<endl;

GotoXY(61,23); cout << "*"<<endl;

}

}

//Функция которая двигает и рисует

enum {KONEC, STENA, PLUS, MOVE};

int Move(Game &g)

{

int & n = g.gaduka.PCount;

COORD head = g.gaduka.t[n - 1]; //голова

COORD tail = g.gaduka.t[0]; //хвост

COORD next;

next.X = head.X + g.dx;

next.Y = head.Y + g.dy; //проверка следующей точки по направлению

if(next.X < 3 || next.Y < 3 || next.X > 60 || next.Y > 23)//не уперлась ли в стену?

return STENA;

if(n > 4)

{

for(int i = 0; i < n; i++)

if(next.X == g.gaduka.t[i].X && next.Y == g.gaduka.t[i].Y) //не наехали ли на себя?

return KONEC;

}

if(next.X == g.jabloko.X && next.Y == g.jabloko.Y)

{

COORD*temp = new COORD[ ++n ]; //новый масив больший на 1

for(int i = 0; i < n; i++)

temp[i] = g.gaduka.t[i]; //перекопируем

temp[n - 1] = next; //добавляем одну

delete [] g.gaduka.t;

g.gaduka.t = temp;

SetConsoleCursorPosition(hConsole,head);

SetConsoleTextAttribute(hConsole, 0x0a); //закрашываем яблоко которое сели

printf("*");

SetConsoleCursorPosition(hConsole,next);

SetConsoleTextAttribute(hConsole,0x0a);

printf("%c",1);

PlusJabloko(g);

return PLUS;

}

for(int i = 0; i < n - 1; i++)

g.gaduka.t[i] = g.gaduka.t[i + 1];

g.gaduka.t[n - 1] = next;

SetConsoleCursorPosition(hConsole,tail);//закрашиваем хвостик

printf(" ");

SetConsoleCursorPosition(hConsole,head);

SetConsoleTextAttribute(hConsole, 0x0a);//красим хвост змеи в зелений цвет

printf("*");

SetConsoleCursorPosition(hConsole,next);

SetConsoleTextAttribute(hConsole,0x0f); //красим курсор в белый цвет (голову змеи)

printf("%c",1);

return MOVE;

}

void main()

{

hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //получаем дескриптор консоли

int key = 0, count = 0;

bool Pause=false;

Game g;

skorostGame(g);

STENA_2();

srand(time(0));

bool pause = false;

while(key != 27)

{

while(!kbhit()) //ждет пока нажмем

{

if(Pause==true)

{

Sleep(1);

continue;

}

switch (Move(g))//движение

{

case PLUS:

++count;

g.pause-=1;

GotoXY(64,2);cout << "Danue:" << endl ;

GotoXY(64,3); cout << "Jablok:" <<count << endl;

GotoXY(64,4); cout << "Dlina:" <<g.gaduka.PCount << endl;

GotoXY(64,5); cout << "Speed:" <<g.pause<< endl;

GotoXY(64,7); cout << "Uprawlenie:" << endl;

GotoXY(64,8); cout << "Esc:Wuxod" << endl;

GotoXY(64,9); cout << "P:Pause" << endl;

GotoXY(64,10); cout <<"S:Start" << endl;

GotoXY(64,11); cout <<"L:Level" << endl;

GotoXY(64,13);printf("%c",24);cout <<":Wwerx"<<endl;

GotoXY(64,14);printf("%c",25);cout<<":Wniz"<<endl;

GotoXY(64,15);printf("%c",27);cout<<":Wlewo"<<endl;

GotoXY(64,16);printf("%c",26);cout<<":Wprawo"<<endl;

if (count == 75)

{

GotoXY(15,1); cout << "Wu wuigrali(maladec!!!)" << endl;

GotoXY(15,6);printf( "\n\t\t\t" );

GotoXY(15,7);printf( "\n\t\t\t" );

getch();

getch();

getch();

getch();

getch();

return;

}

break;

case STENA:

case KONEC:

GotoXY(23,1); printf("Wu proigrali(xa-xa-xa!!!)\n\n\t\t\t");

getch();

return;

break;

}

Sleep(g.pause); //Задержка

}

key = getch();

if(key=='P'||key=='p')

Pause=!Pause;

else if(key=='S'||key=='s')

ZmejaStart();

else if(key=='L'||key=='l')

Level();

else if(key==0||key==224)

{

key=getch();

if(key == 72 && g.nap != DOWN)

{

g.nap = UP;

g.dx = 0;

g.dy = -1;

}

else if(key == 80 && g.nap != UP)

{

g.nap = DOWN;

g.dx = 0;

g.dy = 1;

}

else if(key == 75 && g.nap != RIGHT)

{

g.nap = LEFT;

g.dx = -1;

g.dy = 0;

}

else if(key == 77 && g.nap != LEFT)

{

g.nap = RIGHT;

g.dx = 1;

g.dy = 0;

}

}

}

}

5.Тестирование программы.

Первоначальный вид игры при запуске

Змейка ударилась об объект стенку

Объект ударился об объект

Окончание игры змейка

7.Заключение.

В коде задачи указано максимально допустимое количество яблок, поэтому в игре предусмотрено данное ограничение. Ограничено количество игроков, ограничено количество яблок.

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

Используемая в программе структура файла наиболее оптимально подходит для такого рода операций над файлом . Информация о игроке,

указывается в меню справа.

В целом приложение представляет собой почти самый простой вариант игры «Змейка » с набором самых необходимых функций.

8.Список литературы.

1. Начальный курс С и С++.: Учебник. /Б. И. Березин. Москва:"ДИАЛОГ-МИФИ",1999г.
2. Язык программирования С++. : Учебник. /. Страуструп. Киев:"ДиаСофт", 1993 г.

3. Введение в язык С++: Учебник. / Бьярн Страустрап.

- СПб.: 1995.

4. Структуры и алгоритмы обработки данных: Учебник. / Матьяш В.А., Путилов В.А., Фильчаков В.В. , Щёкин С.В. - Апатиты, КФ Петр ГУ, 2000

5. С++ /Дэвис Стефан Р.,4-е издание : Пер. с англ.:- М.: Издательский дом «Вильямс»,2003

6. Основы программирования: Учеб. Для сред. проф. образования /И.Г.Семакин, А.П.Шестаков. - М., 2006.

7. С++ экспресс курс: Учебник. /Лаптев В.В. - СПб.: БХВ- Петербург 2004.

8. С++ учебный курс: Учебник. /Франка П. - СПб.: Питер 2005.

9. МОДЕЛИ И CТРУКТУРЫ ДАННЫХ:/ Учебное пособие/
Д.Далека, А.С. Деревянко, О.Г.Кравец, Л.Е. Тимановская -Харьков: ХГПУ, 2000

10.Высшая математика для экономистов: учебник для студентов вузов/Н.Ш.Кремер,3-е издание.-М.:ЮНИТИ-ДАНА,2006

9.Приложения.

Приложение 1

Изменение объекта яблоко

Изменение объекта змейка

Меню на русском языке

Приложение 2

К курсовой работе прилагается диск 1.44 Мб.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.