Автор работы: Пользователь скрыл имя, 21 Января 2015 в 18:52, курсовая работа
В настоящее время, разработка игры - это многомиллионный процесс, в котором задействована целая команда разработчиков, сложные современные технологии и даже маркетинговые ходы.
Целью данной курсовой работы будет разработка развивающей ловкость игры - "Змейка".
1. Введение
2. Постановка задачи
3. Описание алгоритма решения в псевдокоде (команды в виде текста на русском языке)
4.
Ни для кого не секрет, что видео игры прочно заняли свою позицию в современной индустрии развлечений. Существуют попытки выделить компьютерные игры как отдельную область искусства, наряду с театром, кино и т.п. Разработка игр может оказаться не только увлекательным, но и прибыльным делом, примеров этому предостаточно в истории. Первые примитивные компьютерные и видео игры были разработаны в 1950-х и 1960-х годах. Они работали на таких платформах, как осциллографы, университетские мейнфреймы и компьютеры EDSAC. Самой первой компьютерной игрой стал симулятор ракеты, созданный в 1942 году Томасом Голдсмитом Младшим (англ. Thomas T. Goldsmith Jr.) и Истл Рей Менном (англ. Estle Ray Mann). Позже, в 1952 году, появилась программа "OXO", имитирующая игру "крестики-нолики", созданная А.С. Дугласом как часть его докторской диссертации в Кембриджском Университете. Игра работала на большом университетском компьютере, известном как EDSAC (Electronic Delay Storage Automatic Calculator). В настоящее время, разработка игры - это многомиллионный процесс, в котором задействована целая команда разработчиков, сложные современные технологии и даже маркетинговые ходы.
Целью данной курсовой работы будет разработка развивающей ловкость игры - "Змейка".
Постановка задачи
Цель: Создать игру “Змейка”
Законченный вариант игры змейка должен содержать:
“змейка” может управляться с помощью клавиш на форме, игра может иметь счетчик набранных очков, таблицу лучших игроков, которая может сохранятся и считываться из файла, а также другие элементы которые увеличивают играбельность игры.
Описание алгоритма решения в псевдокоде (команды в виде текста на русском языке)
Алгоритм.
1) Описываются переменные и константы
2) Выбор начальных координат случайным образом
3) Прорисовка начального положения
4) Генерация на поле яблок случайным образом
5) Проверка: не появилось ли яблоко на черве.
6) Управление “Змейкой” с клавиатуры.
7) Проверка: “не укусила” ли “змейка сама себя”, если укусила выводится информационное окно (Информационная форма), в противном случае переходим к следующему пункту.
8) Проверка: “не съела” ли “змейка” “яблоко” если съела, то наращиваем ей хвост и переходим к пункту 3), в противном случае см. Следующий пункт.
9) Перерисовка “Змейки”
Функции управления экранными объектами.
сообщение |
назначение |
аргументы |
GotoXY( ) |
Размещение объекта |
Координаты х,у |
Level() |
Вы никогда не выиграете, если не будете бдительны |
Координаты х,у |
Move(Game &g) |
Функция которая двигает и рисует |
Game &g |
PlusJabloko(Game &g) |
Функция разброски яблок |
Game &g |
skorostGame(Game &g) |
Функция старта змейки ее координат и скорости
|
Game &g |
SetColor(ConsoleColor text, ConsoleColor background) |
Изменение цвета |
ConsoleColor text, ConsoleColor background |
STENA_2() |
Функция рисования стены |
Координаты х,у стены |
ZmejaStart() |
Старт игры |
GotoXY(10,15) |
Main() |
Главная функция |
Описание функций.
//Функция разброски яблок
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.
При создании экранных объектов по умолчанию происходит следующее:
-информационные рамки
располагаются вертикально
-все объекты создаются белыми с черным контуром.
Структуры:
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\ |
Входные параметры:
1.установка позиции курсора х,у;
void GotoXY(int X, int Y)
{
COORD coord = { X, Y };
SetConsoleCursorPosition(
}
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\
getch();
return;
break;
Исходный код программы С++
Разработка приложения, представляющего собой компьютерную игру «Змейка».
#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_
void GotoXY(int X, int Y)
{
COORD coord = { X, Y };
SetConsoleCursorPosition(
}
//Цвет
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)
{
SetConsoleTextAttribute(
}
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(
SetConsoleTextAttribute(
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);
GotoXY(64,14);printf("%c",25);
GotoXY(64,15);printf("%c",27);
GotoXY(64,16);printf("%c",26);
{
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;