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.


Начало

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

Запуск игры

Жеребьевка

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

Игрок убит

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


 

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

19248. КОЛЕБАНИЯ И ВОЛНЫ В ПЛАЗМЕ В МАГНИТНОМ ПОЛЕ ТЕРМОЯДЕРНЫХ УСТАНОВОК 2.65 MB
  Лекция 11 Колебания и волны в плазме в магнитном поле термоядерных установок Теорема вмороженности магнитногополя. Колебания и волны в замагниченной плазме: магнитный звук скорость Альфена гибридные частоты магнитогидродинамические волны гиротропность п
19249. НЕУСТОЙЧИВОСТИ ПЛАЗМЫ В ТЕРМОЯДЕРНЫХ УСТАНОВКАХ 1.24 MB
  Лекция 12 Неустойчивости плазмы в термоядерных установках Неустойчивость Релея Тейлора неустойчивость Кельвина Гельмгольца разрывная неустойчивость перезамыкание силовых линий магнитного поля неустойчивости токовых систем Z пинчей перетяжки винтова...
19250. УСТРОЙСТВО И РАБОТА ТОКАМАКА 1.6 MB
  Лекция 13 УСТРОЙСТВО И РАБОТА ТОКАМАКА Принцип действия принципиальная схема токамака параметры установки устойчивость тороидального плазменного шнур параметр удержания  энергетическое время жизни. Принцип действия. Принципиальная схема В заключите...
19251. УДАЛЕНИЕ ИЗ ТЕРМОЯДЕРНОЙ УСТАНОВКИ ТЕПЛА И ЧАСТИЦ, ДИВЕРТОР 136 KB
  Лекция 14 Удаление из термоядерной установки тепла и частиц ДИВЕРТОР Конфигурация скрэпслоя в токамаке с дивертором кондиционирование поверхности разрядных камер токамаков Hмода и Lмода режимов удержания плазмы Дивертор нужен не только очистки плазмы от
19252. РЕАКТОР ИТЭР 579.5 KB
  Лекция 15 Реактор ИТЭР Основные параметры ИТЭР бланкет системы диагностики плазмы выбор материалов первой стенки перспективы. Проектирование термоядерных реакторов началось в семидесятых годах прошлого века когда на установках были получены данные позво
19253. Понятие излучения. Реактор как источник излучений. Первичные и вторичные источники излучений. Задачи с источником на границе 71.5 KB
  Лекция 1. Понятие излучения. Реактор как источник излучений. Первичные и вторичные источники излучений. Задачи с источником на границе. 1.1. Понятие излучения. В рамках курса с учетом акцента на задачи радиационной защиты введем понятие излучения так. Излучение и
19254. Понятие радиационной защиты. Классификация защит. Построение задачи расчета защиты 39 KB
  Лекция 2. Понятие радиационной защиты. Классификация защит. Построение задачи расчета защиты. 2.1. Понятие радиационной защиты. Под радиационной защитой понимают материалы конструкцию располагаемые между источником опасности излучения и объектом защиты для о
19255. Понятие поглощенной и эквивалентной дозы. Коэффициенты качества излучения. Предельно допустимая доза облучения 36.5 KB
  Лекция 3. Понятие поглощенной и эквивалентной дозы. Коэффициенты качества излучения. Предельно допустимая доза облучения. 3.1. Понятие поглощенной дозы. Поглощенная доза излучения доза излучения D отношение энергии переданной излучением веществу в некотором о...
19256. Газокинетическое уравнение переноса нейтронов в неразмножающей среде. Решение уравнения переноса для нерассеянной компоненты излучения 122.5 KB
  Лекция 4. Газокинетическое уравнение переноса нейтронов в неразмножающей среде. Решение уравнения переноса для нерассеянной компоненты излучения. 4.1. Газокинетическое уравнение переноса нейтронов в неразмножающей среде. Неразмножающей подкритической будем н...