95069

ИГРА РУССКАЯ РУЛЕТКА

Курсовая

Информатика, кибернетика и программирование

Курсовая работа посвящена разработке компьютерной игры, средствами программы Qt Creator - это средство быстрой разработки приложений. Оно предоставляет возможность быстро создавать прототипы приложений, которые базируются на диалоговых окнах, а также могут иметь главное окно, меню, строку состояния и панель инструментов.

Русский

2015-09-19

591 KB

0 чел.

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

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

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
“ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ”
(ГОУВПО “ВГТУ”)

ФАКУЛЬТЕТ РАДИОТЕХНИКИ И ЭЛЕКТРОНИКИ

КАФЕДРА РАДИОЭЛЕКТРОННЫХ УСТРОЙСТВ И СИСТЕМ

СПЕЦИАЛЬНОСТЬ РАДИОЭЛЕКТРОННЫЕ СИСТЕМЫ И КОМПЛЕКСЫ

ОТЧЁТ ПО КУРСОВОЙ РАБОТЕ

ПО ДИСЦИПЛИНЕ: “ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ”

ПО ТЕМЕ: “ИГРА РУССКАЯ РУЛЕТКА”

Выполнил:

Жемчужников В.Г., РП-143

Проверил:

ст. преподаватель Руднев П.Е.

Защищён                                                                                                   Оценка

2015

Содержание

• Введение……………………………………………………………………………………………………………………... 3

• Техническое задание…………………………………………………………………………………………………… 4

• Блок-схема…………………………………………………………………………………………………………………… 5

• Описание алгоритма работы………………………………………………………………………………………. 6

• Пример работы……………………………………………………………………………………………………………. 14

• Заключение………………………………………………………………………………………………………………….  16

• Список используемой литературы………………………………………………………………………………  17

 

Введение

Курсовая работа посвящена разработке компьютерной игры, средствами программы Qt Creator  ̶  это средство быстрой разработки приложений. Оно предоставляет возможность быстро создавать прототипы приложений, которые базируются на диалоговых окнах, а также могут иметь главное окно, меню, строку состояния и панель инструментов.

Техническое задание

Средствами программы Qt Creator, разработать компьютерную игру «Русская рулетка» .

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

Блок-схема программы

 

  Нет

   

 Да    

 

Описание алгоритма работы программы

#include <mainwindow.h>

#include <ui_mainwindow.h>

#include <QTimer>

#include <QTime>

#include <QPixmap>

/* Подключаем библиотеки: #include <QTimer> (для смены картинок, т.е. для анимации вращения револьвера), #include <QTime> (для случайной генерации заряжания патрона в барабане револьвера), #include <QPixmap> (используется для вставки картинок). */

 

MainWindow::MainWindow(QWidget *parent) :

   QMainWindow(parent),

   ui(new Ui::MainWindow)

{

{

   ui->setupUi(this);

   QObject::connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(kurok()));

       ui->label->setPixmap(QPixmap("stvol.png"));

       ui->label->setGeometry(550%this->width(),180%this->height(),500,500);

       

QObject::connect(ui >pushButton_2,SIGNAL(clicked()),this,SLOT(kolvoigr()));

       QTimer* timer =new QTimer(this);

       connect(timer,SIGNAL(timeout()),this,SLOT(kruty()));

       //запуск таймера

       timer->start(70);

}

}

/* Подключаем клавиши 

QObject::connect(ui >pushButton_2,SIGNAL(clicked()),this,SLOT(kolvoigr())); (клавиши списка меню выбора количества игроков), 

QTimer* timer =new QTimer(this); (определяем таймер для смены(анимации) вращения револьвера)

       connect(timer,SIGNAL(timeout()),this,SLOT(kruty())); (кнопка для старта игры, по нажатию на неё револьвер начинает крутиться)

timer->start(70); (запуск анимации) */

MainWindow::~MainWindow()

{

   delete ui;

}

void MainWindow::kruty()

{if(blok==0)

   {

   if(metka==1 && imet==i && pist==1)

   {

       if(chuv==2)

       {

           if(i==1 || i==4)

           {

               chetch++;

               pist=0;

               if(i==1 && patr!=chetch)

               {

                   povez1++;

               }

               if(i==4 && patr!=chetch)

               {

                   povez4++;

               }

           }

       }

       if(chuv==3)

       {

           if(i==1 || i==4|| i==5)

           {

               chetch++;

               pist=0;

               if(i==1 && patr!=chetch)

               {

                   povez1++;

               }

               if(i==4 && patr!=chetch)

               {

                   povez4++;

               }

               if(i==5 && patr!=chetch)

               {

                   povez5++;

               }

           }

       }

           if(chuv==4)

           {

               if(i==1 || i==2 || i==4 || i==5)

               {

                   chetch++;

                   pist=0;

                   if(i==1 && patr!=chetch)

                   {

                       povez1++;

                   }

                   if(i==4 && patr!=chetch)

                   {

                       povez4++;

                   }

                   if(i==5 && patr!=chetch)

                   {

                       povez5++;

                   }

                   if(i==2 && patr!=chetch)

                   {

                       povez2++;

                   }

               }

           }

               if(chuv==5)

               {

                   if(i==1 || i==2 || i==4 || i==5 || i==6)

                   {

                       chetch++;

                       pist=0;

                       if(i==1 && patr!=chetch)

                       {

                           povez1++;

                       }

                       if(i==4 && patr!=chetch)

                       {

                           povez4++;

                       }

                       if(i==5 && patr!=chetch)

                       {

                           povez5++;

                       }

                       if(i==2 && patr!=chetch)

                       {

                           povez2++;

                       }

                       if(i==6 && patr!=chetch)

                       {

                           povez6++;

                       }

                   }

               }

                   if(chuv==6)

                   {

                       if(i==1 || i==2 || i==3 || i==4 || i==5 || i==6)

                       {

                           chetch++;

                           pist=0;

                           if(i==1 && patr!=chetch)

                           {

                               povez1++;

                           }

                           if(i==4 && patr!=chetch)

                           {

                               povez4++;

                           }

                           if(i==5 && patr!=chetch)

                           {

                               povez5++;

                           }

                           if(i==2 && patr!=chetch)

                           {

                               povez2++;

                           }

                           if(i==6 && patr!=chetch)

                           {

                               povez6++;

                           }

                           if(i==3 && patr!=chetch)

                           {

                               povez3++;

                           }

                       }

       }

   }

/* В этих циклах переменная chuv определяет количество игроков, при условии если номер патрона в барабане не совпадает со значением счетчика (переменная chetch), то выстрела не происходит, т.е. выбранному игроку «повезло». Переменная povez при выполнении условия, указанного выше, с каждым разом увеличивается на единицу, что необходимо нам для статистики.  */

   if(patr==chetch)

   {

       stat();

       if(i==1)

           {

           ui->label_4->setText("Игрок убит!");

       }

           if(i==2)

           {

           ui->label_6->setText("Игрок убит!");

           }

           if(i==3)

           {

           ui->label_8->setText("Игрок убит!");

           }

           if(i==4)

           {

           ui->label_3->setText("Игрок убит!");

           }

           if(i==5)

           {

           ui->label_5->setText("Игрок убит!");

           }

           if(i==6)

           {

           ui->label_7->setText("Игрок убит!");

           }

/* В этих же циклах видим обратное условие т.е., если номер патрона в барабане совпадает со значением счетчика, то происходит выстрел и сообщается, что данный игрок проиграл‒ setText("Игрок убит!"); */

   }

   

          imet = rand()%6+1; //(Задает случайное число прокруток револьвера)

   if(i==1)

       {

       ui->label->setPixmap(QPixmap("stvol.png"));

       ui->label->setGeometry(550%this->width(),180%this->height(),500,500);}

       if(i==2)

       {

       ui->label->setPixmap(QPixmap("stvol_1.png"));

       ui->label->setGeometry(550%this->width(),180%this->height(),500,500);}

       if(i==3)

       {

       ui->label->setPixmap(QPixmap("stvol_2.png"));

       ui->label->setGeometry(550%this->width(),180%this->height(),500,500);}

       if(i==4)

       {

       ui->label->setPixmap(QPixmap("stvol_3.png"));

       ui->label->setGeometry(550%this->width(),180%this->height(),500,500);}

       if(i==5)

       {

       ui->label->setPixmap(QPixmap("stvol_4.png"));

       ui->label->setGeometry(550%this->width(),180%this->height(),500,500);

       }

       if(i==6)

       {

       ui->label->setPixmap(QPixmap("stvol_5.png"));

       ui->label->setGeometry(550%this->width(),180%this->height(),500,500);

       i=0;

       }

/* В данном цикле происходит вставка картинок револьвера по координатам. Это необходимо нам также для анимации. */

 }

}

void MainWindow::kurok()

{

   if(blokkur==1)

   {

    

       prokr++;

   }

}

/* С каждым нажатием на клавишу вращения револьвера, счетчик prokr увеличивается на единицу. Это нам необходимо для статистики количества сделанных ходов. */

void MainWindow::kolvoigr()

{

   if(ui->comboBox->currentText()=="2")

 {chuv=2;

       ui->label_3->setPixmap(QPixmap("game1.png"));

       ui->label_3->setGeometry(960%this->width(),150%this->height(),700,700);

       ui->label_4->setPixmap(QPixmap("game2.png"));

       ui->label_4->setGeometry(300%this->width(),20%this->height(),700,700);

       ui->label_5->setText(" ");

       ui->label_5->setGeometry(720%this->width(),400%this->height(),700,700);

       ui->label_6->setText(" ");

       ui->label_6->setGeometry(560%this->width(),(-240)%this->height(),700,700);

       ui->label_7->setText(" ");

       ui->label_7->setGeometry(400%this->width(),350%this->height(),700,700);

       ui->label_8->setText(" ");

       ui->label_8->setGeometry(850%this->width(),(-200)%this->height(),700,700);

       }

if(ui->comboBox->currentText()=="3")

{chuv=3;

   ui->label_3->setPixmap(QPixmap("game1.png"));

   ui->label_3->setGeometry(960%this->width(),150%this->height(),700,700);

   ui->label_4->setPixmap(QPixmap("game2.png"));

   ui->label_4->setGeometry(300%this->width(),20%this->height(),700,700);

   ui->label_5->setPixmap(QPixmap("game3.png"));

   ui->label_5->setGeometry(720%this->width(),400%this->height(),700,700);

   ui->label_6->setText(" ");

   ui->label_6->setGeometry(560%this->width(),(-240)%this->height(),700,700);

   ui->label_7->setText(" ");

   ui->label_7->setGeometry(400%this->width(),350%this->height(),700,700);

   ui->label_8->setText(" ");

   ui->label_8->setGeometry(850%this->width(),(-200)%this->height(),700,700);

     }

if(ui->comboBox->currentText()=="4")

{chuv=4;

   ui->label_3->setPixmap(QPixmap("game1.png"));

   ui->label_3->setGeometry(960%this->width(),150%this->height(),700,700);

   ui->label_4->setPixmap(QPixmap("game2.png"));

   ui->label_4->setGeometry(300%this->width(),20%this->height(),700,700);

   ui->label_5->setPixmap(QPixmap("game3.png"));

   ui->label_5->setGeometry(720%this->width(),400%this->height(),700,700);

   ui->label_6->setPixmap(QPixmap("game4.png"));

   ui->label_6->setGeometry(560%this->width(),(-240)%this->height(),700,700);

   ui->label_7->setText(" ");

   ui->label_7->setGeometry(400%this->width(),350%this->height(),700,700);

   ui->label_8->setText(" ");

   ui->label_8->setGeometry(850%this->width(),(-200)%this->height(),700,700);

     }

if(ui->comboBox->currentText()=="5")

{chuv=5;

   ui->label_3->setPixmap(QPixmap("game1.png"));

   ui->label_3->setGeometry(960%this->width(),150%this->height(),700,700);

   ui->label_4->setPixmap(QPixmap("game2.png"));

   ui->label_4->setGeometry(300%this->width(),20%this->height(),700,700);

   ui->label_5->setPixmap(QPixmap("game3.png"));

   ui->label_5->setGeometry(720%this->width(),400%this->height(),700,700);

   ui->label_6->setPixmap(QPixmap("game4.png"));

   ui->label_6->setGeometry(560%this->width(),(-240)%this->height(),700,700);

   ui->label_7->setPixmap(QPixmap("game5.png"));

   ui->label_7->setGeometry(400%this->width(),350%this->height(),700,700);

   ui->label_8->setText(" ");

   ui->label_8->setGeometry(850%this->width(),(-200)%this->height(),700,700);

     }

if(ui->comboBox->currentText()=="6")

{chuv=6;

     ui->label_3->setPixmap(QPixmap("game1.png"));

     ui->label_3->setGeometry(960%this->width(),150%this->height(),700,700);

     ui->label_4->setPixmap(QPixmap("game2.png"));

     ui->label_4->setGeometry(300%this->width(),20%this->height(),700,700);

     ui->label_5->setPixmap(QPixmap("game3.png"));

     ui->label_5->setGeometry(720%this->width(),400%this->height(),700,700);

     ui->label_6->setPixmap(QPixmap("game4.png"));

     ui->label_6->setGeometry(560%this->width(),(-240)%this->height(),700,700);

     ui->label_7->setPixmap(QPixmap("game5.png"));

     ui->label_7->setGeometry(400%this->width(),350%this->height(),700,700);

     ui->label_8->setPixmap(QPixmap("game6.png"));

     ui->label_8->setGeometry(850%this->width(),(-200)%this->height(),700,700);

     }

/* Строки, написанные выше задают игроков, т.е. при выборе значения «2» в выпадающем меню выбора количества игроков, появляются две картинки игроков. Максимальное количество игроков—«6». Вставка картинок происходит также по координатам.  */

patr = rand()%6+1;

// Генерируем случайное положение патрона в барабане револьвера.

blok=0;

blokkur=1;

/* Когда эта переменная blok принимает значение, не равное 0, т.е. после выстрела, револьвер перестает вращаться, а при значении blokkur отличным от 1 кнопка вращения становится неактивной. */

 

chetch=0;

prokr=0;

povez1=0;

povez2=0;

povez3=0;

povez4=0;

povez5=0;

povez6=0;

// Обнуляем указанные счетчики для корректного отображения статистки.

QString tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6;

tmp1.setNum(povez1);

tmp2.setNum(povez2);

tmp3.setNum(povez3);

tmp4.setNum(povez4);

tmp5.setNum(povez5);

tmp6.setNum(povez6);

ui->label_17->setText(tmp1);

ui->label_18->setText(tmp2);

ui->label_19->setText(tmp3);

ui->label_20->setText(tmp4);

ui->label_21->setText(tmp5);

ui->label_22->setText(tmp6);

   tmp.setNum(prokr);

    ui->label_16->setText(tmp);

}

void MainWindow::stat()

{ blok=1;

   blokkur=0;

  QString tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6;

  tmp1.setNum(povez1);

  tmp2.setNum(povez2);

  tmp3.setNum(povez3);

  tmp4.setNum(povez4);

  tmp5.setNum(povez5);

  tmp6.setNum(povez6);

  ui->label_17->setText(tmp1);

  ui->label_18->setText(tmp2);

  ui->label_19->setText(tmp3);

  ui->label_20->setText(tmp4);

  ui->label_21->setText(tmp5);

  ui->label_22->setText(tmp6);

      tmp.setNum(prokr);

       ui->label_16->setText(tmp);

}

/* По завершении игры выводится статистика: количества сделанных ходов, и удачных исходов. setNum осуществляет вывод численного значения соответствующих переменных в заданные поля (Label).  */

Пример работы программы

Рис. 1 Начало игры

Рис. 2 Проигрыш игрока C. Вывод статистики (слева)

Заключение

Итогом курсовой работы стала компьютерная игра «Русская рулетка», разработанная средствами программы Qt Creator.

 

Список используемой литературы

  1.  Ю.Э. Корчагин / Учебное пособие/ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С и С++: ЛАБОРАТОРНЫЙ ПРАКТИКУМ.
  2.  Макс Шлее. Qt 4.5. Профессиональное программирование на C++— СПб: БХВ-Петербург, 2010.


Начало

Выбор количества игроков

Запуск игры

Жеребьевка

Произошел выстрел?

Игрок убит

Завершение игры и вывод статистики


 

А также другие работы, которые могут Вас заинтересовать

27503. Определите, к какому виду правовых норм относится ст.5 ГК РФ 35 KB
  Нормы бывают исходные и правила поведения. Так же нормы бывают: начала дефиниции принципы коллизионные. 1 Исходные отправные первичные учредительные нормы занимают высшую ступень в законодательстве имеют наиболее общий характер наиболее высокую форму абстрагирования и выполняют особую роль в механизме правового регулирования общественных отношений. Эти нормы определяют исходные начала основы правового регулирования общественных отношений.
27504. Определите, что выступает предпосылками пенсионного правоотношения 28 KB
  Разграничиваются собственно юридические факты юридически значимые обстоятельства и юридически значимые предпосылки. Первые это основные фактические обстоятельства с которыми связано появление правовых отношений данного вида например возраст инвалидность потеря кормильца выслуга лет и т. Вторые это обстоятельства которые не предопределяя появления прав и обязанностей все же влияют на их объем величина трудового стажа наличие нетрудоспособных членов семьи и иждивенцев и т. Третьи такие фактические обстоятельства которые...
27505. Основные подходы к понятию политическая система 33.5 KB
  Элементами политической организации общества являются государство общественные объединения отдельные граждане. К числу общественных объединений входящих в политическую систему общества можно отнести: – общественные организации т. основанные на членстве общественные объединения создаваемые на основе совместной деятельности для защиты общих интересов и достижения уставных целей членами которых могут быть как физические так и юридические лица – ст.8; – общественные движения состоящие из участников и не имеющие членства общественные...
27506. Основные подходы к правопониманию 27.5 KB
  Правопонимание это научная категория отражающая процесс и результат целенаправленной мыслительной деятельности человека включающая в себя познание права его восприятие и отношение к нему как к целостному социальному явлению Субъектом правопонимания – всегда выступает конкретный человек например гражданин обладающий минимальным правовым кругозором столкнувшийся с проблемой права Объектом правопонимания – могут быть право конкретного общества отрасль институт права отдельные правовые нормы Содержание правопонимания – составляет...
27507. Относительная самостоятельность государства и права по отношению к обществу 26.5 KB
  Самостоятельность – независимость свобода от внешних влияний принуждений от посторонней поддержки помощи. Относительная самостоятельность государства его органов естественна необходима и социально оправданна. Самостоятельность государства проявляется в свободе выбора при принятии им управленческих и других актов при избрании путей и методов решения встающих перед обществом задач при определении стратегии и тактики государственной политики.
27508. Отрасль права: понятие и характеристика 33 KB
  Отрасль права элемент системы права представляющий собой совокупность норм права регулирующих качественно однородную группу общественных отношений. В свою очередь отрасль права подразделяется на отдельные взаимосвязанные элементы которые называются институтами права. Основаниями для деления права на отрасли считаются: 1 предмет правового регулирования однородная и отделимая от других группа общественных отношений; 2 метод правового регулирования совокупность приемов способов воздействия на общественные отношения.
27509. Охарактеризуйте основные виды государственного принуждения 28.5 KB
  Охарактеризуйте основные виды государственного принуждения. Сфера воздействия на объект определяет вид государственного принуждения. 1 Предмет психологического государственного принуждения имеет сложную структуру. Задача психического принуждения состоит в возбуждении такого мотива поведения который вступая в борьбу с иными мотивами должен преодолеть их и склонить субъекта к требуемому поведению.
27510. Охарактеризуйте основные элементы состава правонарушения 39 KB
  Охарактеризуйте основные элементы состава правонарушения. Состав правонарушения как правовое понятие и раскрывает эту сложную структуру. Состав правонарушения – это совокупность его элементов. Элементами состава правонарушения являются: объект правонарушения объективная сторона правонарушения субъект правонарушения субъективная сторона правонарушения.
27511. Охарактеризуйте соотношение понятий форма и источник права 30 KB
  Охарактеризуйте соотношение понятий форма и источник права. В отечественной правовой теории значительное место занимала дискуссия о правильности терминов обозначающих соответствующие понятия – €œисточник права€ или €œформа права€. Одни ученые признавали более правильным употребление термина €œформа права€ А. Шебалов другие склонялись к термину €œюридический формальный источник права€ С.