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.


Начало

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

Запуск игры

Жеребьевка

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

Игрок убит

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


 

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

36078. Оцінка організаційного потенціалу підприємства 67 KB
  Оцінка організаційного потенціалу підприємства. План Оцінка організаційного потенціалу підприємства в системі параметрів організаційного проектування. Методи управління при формуванні потенціалу підприємства.
36081. Формування і тенденції розвитку потенціалу підприємства 251 KB
  Методичні засади формування потенціалу підприємства.Формування ПП тісно повязане з властивостями всієї економічної системи: складність потенціал підприємства це сукупність елементів які знаходяться в взаємодії і утворюють єдине ціле що знаходиться у динамічному стані тобто вона не є механічною сумою елементів; структурність ПП побудова з певною ієрархічністю яка відображає зміст і співвідношення складових та визначає її цінність; адаптивність ПП може імпульсивно реагувати на зміни внутрішнього і зовнішнього середовища; ...
36082. Оцінювання маркетингового потенціалу підприємства на основі діагностики внутрішнього і зовнішнього середовища 219.5 KB
  Оцінювання ефективності товарних стратегій підприємства. Оцінювання інвестиційних можливостей у процесі планування прибутку підприємства. Оцінювання перспектив зростання підприємства на основі портфельного аналізу.
36083. Оцінювання інноваційного потенціалу підприємства 58 KB
  Фактори сприятливості до нововведень. Сприйняття нововведень персоналом. Властивості нововведень та їх вплив на потенціал інновацій. Реалізація мотиваційного механізму розвитку виробництва пов`язана з необхідністю вирішення таких проблем: впровадження мотивів нововведень у виробництво під впливом внутрішніх і зовнішніх факторів виробництва; сприйняття інновацій виробничою системою; додавання мотиваційного механізму розвитку виробництва властивості самоорганізації під впливом НТП.
36084. Управління фінансовим капіталом підприємства 68.5 KB
  Поняття фінансового капіталу і його призначення. Джерела утворення фінансового капіталу. Вартість і структура фінансового капіталу оцінка його вартості. Оптимальна структура фінансового капіталу.
36085. Активізоване управління підприємства 249.5 KB
  Активізоване управління підприємства. План: Ознаки та чинники виникнення кризи на підприємстві; Аспекти банкрутства підприємства; Формування системи антикризового управління. З погляду управління кризове явище це негативне відхилення обєкта управління від певної мети або строків її досягнення. Реакція системи управління на кризу починається тоді коли підприємство стає банкрутом.
36086. Характеристика елементів потенціалу підприємства 491 KB
  2011 Літературні джерела для вивчення курсу управління потенціалом підприємства: Должанський І. Потенціал підприємства: формування та оцінювання К. Економіка підприємства К.