Составление программы "змейка"

Автор работы: Пользователь скрыл имя, 21 Января 2015 в 18:52, курсовая работа

Краткое описание

В настоящее время, разработка игры - это многомиллионный процесс, в котором задействована целая команда разработчиков, сложные современные технологии и даже маркетинговые ходы.
Целью данной курсовой работы будет разработка развивающей ловкость игры - "Змейка".

Содержание

1. Введение
2. Постановка задачи
3. Описание алгоритма решения в псевдокоде (команды в виде текста на русском языке)
4.

Вложенные файлы: 1 файл

змейка.docx

— 41.90 Кб (Скачать файл)

 

Содержание

  1. Введение
  2. Постановка задачи
  3. Описание  алгоритма решения в псевдокоде (команды в виде текста на русском языке)
  •  

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Введение

    Ни для кого не секрет, что видео игры прочно заняли свою позицию в современной индустрии развлечений. Существуют попытки выделить компьютерные игры как отдельную область искусства, наряду с театром, кино и т.п. Разработка игр может оказаться не только увлекательным, но и прибыльным делом, примеров этому предостаточно в истории. Первые примитивные компьютерные и видео игры были разработаны в 1950-х и 1960-х годах. Они работали на таких платформах, как осциллографы, университетские мейнфреймы и компьютеры EDSAC. Самой первой компьютерной игрой стал симулятор ракеты, созданный в 1942 году Томасом Голдсмитом Младшим (англ. Thomas T. Goldsmith Jr.) и Истл Рей Менном (англ. Estle Ray Mann). Позже, в 1952 году, появилась программа "OXO", имитирующая игру "крестики-нолики", созданная А.С. Дугласом как часть его докторской диссертации в Кембриджском Университете. Игра работала на большом университетском компьютере, известном как EDSAC (Electronic Delay Storage Automatic Calculator). В настоящее время, разработка игры - это многомиллионный процесс, в котором задействована целая команда разработчиков, сложные современные технологии и даже маркетинговые ходы.

    Целью данной курсовой работы будет разработка развивающей ловкость игры - "Змейка".

     

     

     

     

    Постановка задачи

     

    Цель: Создать игру  “Змейка”

     

    Законченный вариант игры змейка должен содержать:

    1. “Змейку”, которая может двигаться в ограниченной плоскости. Маневрами “Змейки” должен управлять играющий. “Змейка” должна увеличиваться в размерах при столкновении с “яблоком” и погибать при столкновении с “стеной”, при пересечении самой себя и при выходе за границы плоскости заданной программистом.
    2. “Яблоко” или другой объект, при столкновении с которым “Змейка” “съедает” его(увеличивается в длину в зависимости от условий заданных программистом.
    3. “стена” объект при столкновении с которым змейка погибает.

    “змейка” может управляться с помощью клавиш на форме, игра может иметь счетчик набранных очков, таблицу лучших игроков, которая может сохранятся и считываться из файла, а также другие элементы которые увеличивают играбельность игры.

     

    Описание алгоритма решения в псевдокоде (команды в виде текста на русском языке)

    Алгоритм.

    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.

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

    -информационные рамки  располагаются вертикально друг  под другом в правой части  экрана, остальные объекты размещаются  в точке с координатами(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;

     

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

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

     

    #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)

    {

     SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | 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;

    Информация о работе Составление программы "змейка"