Разработка игровой программы "Экзамен"

Разработка игры "Экзамен" с применением объектно-ориентированного программирования и языка Java (в среде Eclipse Helios). Структура программы и алгоритм решения задачи. Описание методов и переменных. Экспериментальное тестирование и оценка программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.05.2011
Размер файла 122,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ВОСТОЧНО - СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ»

ЭЛЕКТРОТЕХНИЧЕСКИЙ ФАКУЛЬТЕТ

Кафедра «Систем информатики»

Курсовая работа

639.3.2.09.07.525.10)

по дисциплине: Объектно-ориентированное программирование

Тема: Разработка игровой программы "Экзамен"

Выполнил: студент гр. Д639-5

Петручик Д. В.

Руководитель: преподаватель

Дармахеев В.В.

г. Улан-Удэ

2010 г

ЗАДАНИЕ

на курсовой проект

Дисциплина: Объектно-ориентированное программирование

Тема: Разработка игры «Экзамен»

Исполнитель: Петручик Д.В.

Руководитель: Дармахеев В.В.

Краткое содержание проекта: Разработка игры «Экзамен» на языке Java средствами среды программирования Eclipse Helios.

1. Теоретическая часть: Концепция объектно-ориентированного программирования

Основные понятия ООП. Иерархия классов.

2. Практическая часть: Ответь на вопросы. Алгоритм управления. Структура программы

Программная реализация разработанного алгоритма. Описание методов и переменных программы. Тестирование. Оценка результатов тестирования.

Сроки выполнения проекта по графику:

Теоретический раздел - 30 % к _6_ неделе.

2. Основной раздел. Проектирование - 60 % к _8_ неделе.

3. Основной раздел. Кодирование - 70 % к _13_ неделе.

4. Экспериментальный раздел - 90 % к _14_ неделе.

5. Защита - 100 % к _15_ неделе.

Требования к оформлению:

1. Расчетно-пояснительная записка курсового проекта должна быть представлена в электронной и твердой копиях.

2. Объем РПЗ должен быть не менее 20 машинописных страниц без учета приложений.

3. РПЗ оформляется по ГОСТу 7.32-91 и подписывается у ответств. за нормоконтроль.

Руководитель проекта Дармахеев В.В.

Исполнитель Петручик Д.В.

Дата выдачи 3 апреля 2011 г.

Аннотация

Данная курсовая работа посвящена разработке игровой программы «Угадай Экзамен» Программа реализована в среде программирования Eclipse Helios. Алгоритм программы достаточно прост и реализован оптимальными методами. Игровая программа реализована и протестирована на примерах. В работе проанализирован результат тестирования разработанной программы, на основе результата проведенного анализа сделан вывод, что программа работает верно.

Оглавление

АННОТАЦИЯ

ВВЕДЕНИЕ

1. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ

1.1 Концепция ООП

1.2 Основные понятия ООП

1.3.Иерархия классов

2. ПРОЕКТНЫЙ РАЗДЕЛ

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

2.2 Алгоритм управления

2.3 Структура программы

3. ПРОГРАММНЫЙ РАЗДЕЛ

3.1 Описание методов и переменных

4. ЭКСПЕРЕМЕНТАЛЬНЫЙ РАЗДЕЛ

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

4.2 Оценка результатов тестирования

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ВВЕДЕНИЕ

игра программа java

Данный курсовой проект посвящен изучению объектно-ориентированного языка Java.

Практической целью проекта является разработка игры «Экзамен » с применением объектно-ориентированного программирования. Для решения поставленной задачи были использованы стандартные библиотеки языка Java, а также разработаны специальные методы.

Для достижения поставленной цели необходимо решить следующие задачи:

1) Изучить теоретический материал, связанный с языком Java;

2) Разработать алгоритм решения задачи;

3) На основе алгоритма, написать игровую программу;

4) Протестировать программу на различных примерах.

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

1. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ

1.1 Концепция объектно-ориентированного программирования

Объектно-ориентированное программирование представляет собой одну из парадигм программирования, т.е. это совокупность идей и понятий, определяющих стиль написания программ. Основной концепцией ООП является понятия объекта и класса.

Класс - это тип, описывающий устройство объектов. Понятие «класс» подразумевает некоторое поведение и способ представления. Класс является описываемой на языке терминологии исходного кода моделью ещё не существующей сущности, т. н. объекта.

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

Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом представления. Говорят, что объект-это экземпляр класса. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

1.2 Основные понятия ООП

Абстракция - это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов. Таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.

Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации. В каждом конкретном случае применяется тот или иной подход: инкапсуляция, полиморфизм или наследование

Инкапсуляция - принцип, согласно которому любой класс должен рассматриваться как чёрный ящик - пользователь класса должен видеть и использовать только интерфейсную часть класса и не вникать в его внутреннюю реализацию. Данные инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.

Сокрытие данных - часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.

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

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

1.3 Иерархия классов

Размещено на http://www.allbest.ru/

Рисунок 1.1 Иерархия классов

2. ПРОЕКТНЫЙ РАЗДЕЛ

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

Игра «Экзамен является консольной. Правила таковы. Вы выбираете один из экзаменов и отвечаете на вопросы. Если ответ правильный, то оценка увеличивается на один бал. В одной игре вопросы не повторяются.

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

2.2 Алгоритм управления

Для того чтобы организовать механизм игры необходимо реализовать следующие действия:

· Игрок должен делать выбор по предмету;

· На каждом ходу должна выводится новые вопросы;

· Организовать механизм окончания игры.

2.3 Структура программы

При запуске игры игрок вводит непосредственно в консоль выбор предмета, который он собирается сдавать. Далее игроку выводится вопросы по этому предмету. Если игрок угадал, то бал увеличивается на единицу.

3. ПРОГРАММНЫЙ РАЗДЕЛ

3.1 Описание методов и переменных

Разработанный проект программы включает в себя следующие переменные и методы:

public class Game - класс Games

public static void main() - главный метод в котором осуществляется игровой цикл.

int obsh_ball=2 - общий бал, который минимум равно 2

boolean r=false,f=false; - флаги для завершения игры

int n,m,i; - временные переменные (пр. для цикла)

public class student - класс студент

public int ball; - наследующее переменная

public int n_ex; -номер экзамена

private boolean l; - конец игры

public int change_subject() -ввод предмета который студент хочет сдавать.

public int changeticket()- выбор билета.

public boolean loser() - метод об прекращение сдачи экзамена.

public class execisize - класс вопросы

public boolean flag; - флаг об правельном ответе на вопрос

public int question_c(int n- вопросы на экзамен С.

public int question_o(int n)- вопросы на экзамен ФЛП.

public int question_m(int n)- вопросы на экзамен МСЗИ.

4. ЭКСПЕРИМЕНТАЛЬНЫЙ РАЗДЕЛ

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

Тестирование игровой программы производилось путем проверки выполнения корректности работы игры. В нормальных условиях программа работала без каких-либо сбоев. Все необходимые операции выполняются верно.

Рисунок 4.1 Тестирование в нормальных условиях

4.2 Оценка результатов тестирования

По итогам тестирования, можно сделать вывод. Данная программа, при соблюдении всех условий работает правильно, контрольное тестирование не выявило критических ошибок, приводящих к сбою программы.

ЗАКЛЮЧЕНИЕ

Разработка игровой программы «Экзамен» была выполнена в полном объеме. В процессе написания курсового проекта были решены следующие задачи:

1. Разработана игровая программа;

2. Изучены основы языка Java

3. Изучены теоретические основы ООП;

Также последовательно были выполнены следующие этапы:

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

2. Разработка алгоритма;

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

4. Тестирование;

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Java 2 П.Ноутон,Г.Шилдт ;

2. Джуди Бишоп Эффективная работа Java2 БХВ «Питер»;

3. Х. М. Дейтел, П. Дж. Дейтел, С. И. Сантри Технологии программирования на Java 2;

Полный справочник по Java 2007 Гербер Шилдт «Вильямс» 2007г;

Листинг программы

import java.io.IOException;

public class Game {

/**

* @param args

*/

public static void main(String[] args)throws IOException

{

int obsh_ball=2;

System.out.println("ИГРА <<ЭКЗАМЕН>>");

student st=new student();

execisize e=new execisize();

boolean r=false,f=false;

int n,m,i;

m=st.change_subject();

if ((st.n_ex<1)||(st.n_ex>3))

{

System.out.println("Выбирити Один из списков");

m=st.change_subject();

}

n=st.changeticket();

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

{System.out.println("(Осталось попыток <<"+(3-i)+">>)");

if (r==false)

{

if (st.n_ex==1)

{

e.question_c(n);

if (e.flag==true) obsh_ball=obsh_ball+1;

}

if (st.n_ex==3)

{

e.question_o(n);

if (e.flag==true) obsh_ball=obsh_ball+1;

}

if (st.n_ex==2)

{

e.question_m(n);

if (e.flag==true) obsh_ball=obsh_ball+1;

}

}

System.out.print("Оценка <<"+obsh_ball);

r=st.loser();

if ((i==2)&&(obsh_ball==2)) System.out.println("Попытки закончились,двойка тоже оценка, перездадите позже:(");

else

if ((i==2)&&(obsh_ball>=2)&&(obsh_ball<=4)) System.out.println("Попытки закончились, Оцека "+obsh_ball);

else

if (obsh_ball==5) System.out.println("Отлично, молодец "+obsh_ball);

}

}

private static boolean question_c(boolean f) {

// TODO Auto-generated method stub

return false;

}

}

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

import java.io.*;

import java.util.Scanner;

public class student

{

public int ball;

public int n_ex;

private boolean l;

student()

{

n_ex=10;

l=false;

}

public int change_subject()throws IOException

{

char n_p;

System.out.println("C , МСЗИ , ФЛП ");

String predmet[]={"C","МСЗИ","ООП"};

System.out.println("Введи что сдаем");

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

switch (n_p=(char)br.read()){

case 'С':

{

System.out.println("Вы выбрали _C_ ");

n_ex=1;

break;

}

case 'М':

{

System.out.println("Вы выбрали _МСЗИ_");

n_ex=2;

break;

}

case 'Ф':

{

System.out.println("Вы выбрали _ФЛП_");

n_ex=3;

break;

}

default:

{

n_ex=10;

break;

}

}

return n_ex;

}

public int changeticket()throws IOException

{

int nomer;

System.out.println("Выбирити билет");

Scanner scanner = new Scanner(System.in);

nomer=scanner.nextInt();

System.out.println("Ваш билет с номером "+nomer);

return nomer;

}

public boolean loser()throws IOException

{

execisize ex=new execisize();

char v;

System.out.println(">> вам устраивает Да / Нет ? (Д,Н)");

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

v=(char)br.read();

if ((v=='Д')||(v=='д'))

if (l=false)

{

System.out.println("На пересдачу");

l=true;

}

return l;

}

}

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

import java.io.*;

import java.util.Random;

public class execisize

{

public int n;

student st=new student();

public boolean flag;

execisize()

{

flag=false;

}

public int question_c(int n) throws IOException

{

flag=false;

String one[]={"Как называется функция вывода в C ?",

"Кто написал язык C ?",

"С++ это С с классами ?",

"Год выпуска первой версии С++ Builder ",

"C - это структурное программирование",

"Безусловный оператор цикла",

"Функция обращаемая сама себе",

"Общедоступный способ доступа к членам данных",

"Свойство позволяющая использовать один и тот же интерфейс",

"Удаление элементов из памяти"};

String o_r[]={"printf",

"Ритчи",

"Нет",

"1997",

"Да",

"for",

"рекурсия",

"public",

"полиморфизм",

"delete"};

String blok[]={"+","+","+","+","+","+","+","+","+","+"};

Random rand = new Random();

int randnum = rand.nextInt(9);

int q;

q=randnum;

if (blok[q]!="+")

while (blok[q]=="+")

{

q=randnum;

}

blok[q]="-";

BufferedReader b=new BufferedReader(new InputStreamReader(System.in));

String answer="";

System.out.println(one[q]);

answer=b.readLine();

System.out.println("Ваш ответ= "+answer);

if (o_r[q].equals(answer))

{

System.out.println("Правильно");

flag=true;

}

else

{

flag=false;

System.out.println("не Правильно");

}

return n;

}

public int question_o(int n) throws IOException

{

flag=false;

String one[]={"функция добовления новых элементов в голову списка",

"проверка, является ли элемент атамом",

"сравнивает 2-а символа и возвращает значение True",

"из сприка берет первый элемент",

"из списка берет хвост",

"вычисляет имя и связывает его",

"вычисляет значение значения",

"блок вычисления выражения",

"обращение к функции присваивания",

"символ числа а также строки"};

String o_r[]={"CONS",

"ATOM",

"EQ",

"CAR",

"CDR",

"SET",

"EVAL",

"QUOTE",

"SETQ",

"атом"};

String blok[]={"+","+","+","+","+","+","+","+","+","+"};

Random r = new Random();

int randnum = r.nextInt(1);

int q;

q=randnum;

if (blok[q]!="+")

while (blok[q]=="+")

{

q=randnum;

}

blok[q]="-";

BufferedReader b=new BufferedReader(new InputStreamReader(System.in));

String answer="";

System.out.println(one[q]);

answer=b.readLine();

System.out.println("Ваш ответ= "+answer);

if (o_r[q].equals(answer))

{

System.out.println("Правильно");

flag=true;

}

else

{

flag=false;

System.out.println("не Правильно");

}

return n;

}

public int question_m(int n) throws IOException

{

flag=false;

String one[]={"Главный параметр шифра",

"процесс преобразования текста в другой текст на основе некого алгоритма ",

"симметричный алгоритм шифрования, разработанный фирмой IBM",

"набор средств и методов сокрытия факта передачи сообщения",

"проверка подлинности сущности с помощью различный меток",

"преобразование зашифрованного кода в исходный",

"наука о методах преобразования шифрования с целью её защиты от злоумышленников",

"способность шифра противостоять его дешифровке",

"процесс распознавание личности путем присвоения управляющей метки",

"совокупность аппаратных, программных и спец. компонентов ВС реализующая функцию защиты уровня безопасности"};

String o_r[]={"ключ",

"шифрование",

"des",

"стенография",

"аутентификация",

"дешифрование",

"криптография",

"стойкость",

"идентификация",

"ядро безопасности"};

String blok[]={"+","+","+","+","+","+","+","+","+","+"};

Random d = new Random();

int randnum = d.nextInt(2);

int q;

q=randnum;

if (blok[q]!="+")

while (blok[q]=="+")

{

q=randnum;

}

blok[q]="-";

BufferedReader b=new BufferedReader(new InputStreamReader(System.in));

String answer="";

System.out.println(one[q]);

answer=b.readLine();

System.out.println("Ваш ответ= "+answer);

if (o_r[q].equals(answer))

{

System.out.println("Правильно");

flag=true;

}

else

{

flag=false;

System.out.println("не Правильно");

}

return n;

}

}

Размещено на Allbest.ru


Подобные документы

  • Разработка программы логической игры в "крестики-нолики" пять в ряд на поле размера 15х15 клеток с применением графики на языке Pascal с использованием объектно-ориентированного программирования. Структура алгоритма программы и описание ее работы.

    курсовая работа [821,5 K], добавлен 13.02.2012

  • Описание языка программирования Java: общие характеристики, главные свойства, краткий обзор. Надежность и безопасность, производительность и базовая система программы. Разработка программы поиска по словарю, алгоритм её работы. Общий вид кода программы.

    курсовая работа [20,3 K], добавлен 28.10.2012

  • Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.

    контрольная работа [1,3 M], добавлен 19.06.2012

  • Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

    курсовая работа [1,5 M], добавлен 17.01.2011

  • Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.

    курсовая работа [1,2 M], добавлен 07.07.2012

  • Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.

    курсовая работа [1,2 M], добавлен 04.08.2014

  • Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.

    курсовая работа [333,5 K], добавлен 21.01.2013

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

  • Особенности визуальной среды программирования Microsoft Visual Studio 2015 Enterprise. Средства объектно-ориентированного программирования. Этапы проектирования программного комплекса. Отладка и тестирование программы игры "Виселица".

    курсовая работа [2,4 M], добавлен 31.01.2016

  • Постановка задачи и математическое описание ее решения. Назначение программного обеспечения. Описание принятых идентификаторов. Выбор языка программирования и написание программы на входном языке. Методика отладки программы и проведение ее тестирования.

    курсовая работа [96,1 K], добавлен 25.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.