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.


Начало

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

Запуск игры

Жеребьевка

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

Игрок убит

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


 

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

15094. Сәкен Сейфуллиннің Көкшетау поэмасын оқыту 36 KB
  Сәкен Сейфуллиннің Көкшетау поэмасын оқыту Ғ.А. Қазанбаева №136 орта мектеп Алматы қаласы Тақырыбы: Сәкен Сейфуллин. Көкшетау поэмасының мазмұны мен идеясы. Мақсаты: а білімділік: Поэманың мазмұнын қайталай отырып жазылу тарихына көтерге...
15095. Сәкен Сейфуллиннің поэзиясы 62.5 KB
  Жаңа тұрмыс жырлары Сәкен Сейфуллинннің поэзиясы Жиырмасыншы жылдары қоғамдық өмірде болған түбегейлі өзгерістер жаңа заман дамуының қарқындылығы тарихи оқиғалардың жедел ауысып отыруы Сәкен поэзиясында сол дәуір бейнесін берерлік екінші образ жүйрік пойыз...
15096. Түркі халықтарының жазба ескерткіші және оның көздері 70.5 KB
  ТҮРКІ ХАЛЫҚТАРЫНЫҢ ЖАЗБА ЕСКЕРТКІШІ ЖӘНЕ ОНЫҢ КӨЗДЕРІ С. Тәжіғұлова Ғ. Мұратбаев атындағы № 17 орта мектеп Тараз қ. Әрбір дәуірдің елеулі кезеңді оқиғаларын заманының белгілі ақынжазушылары дастанжырларға ойшылдары тарихшежіреге айналдыры
15097. У.Шекспир және Д.Дефо шығармашылығы 50.5 KB
  Ағылшын әдебиеті Уильям Шекспир 1564 1616 Ағылшынның әлемге аты әйгілі драматургы әрі ақыны Уильям Шекспир 1564 жылы 23 сәуірде Эйвон өзенінің бойындағы Стратфорд деген кішкентай қалада дүниеге келген. Оның әкесі айтарлықтай ауқатты қала тұрғыны еді саудаг
15098. Ұлт-азаттық көтерілістері туралы Қытай қазақтарының тарихи жырлар 197 KB
  ӘОЖ 398.21/22943.42510 Қолжазба құқығында АЯЗБАЕВА ҰЛБОСЫН БАЗАРХАНҚЫЗЫ ҰЛТАЗАТТЫҚ КӨТЕРІЛІСІ ТУРАЛЫ ТАРИХИ ЖЫРЛАР Қытайдағы қазақтардың ХІХ ғасырдың екінші және ХХ ғасырдың бірінші жартысында туған тар...
15099. Файзолла ақын және Алаш қоғамдық саяси қозғалысы 72 KB
  Айбек ҚАЛИЕВ Л.Н.Гумилев атындағы Еуразия ұлттық университеті қазақ әдебиеті кафедрасының аға оқытушысы филология ғылымдарының кандидаты ФАЙЗОЛЛА АҚЫН ЖӘНЕ АЛАШ ҚАЙРАТКЕРЛЕРІ Қазақ әдебиетінің тарихындағы ақтаңдақ беттердің бірі ХІХ ғасырдың соңы мен ХХ ғ
15100. Фолклористикадағы миф 38.5 KB
  ФОЛКЛОРИСТИКАДАҒЫ МИФ ОНДАҒЫ ФЕТИШИЗМ МЕН АНИМИЗМ ТАБУ НАНЫМСЕНІМ МӘСЕЛЕЛЕРІ М. Иманғазинов Б. Есімбекова І. Жансүгіров атындағы Жетісу мемлекеттік университеті Талдықорған қ. Ы. Алтынсарин атындағы Қазақ білім академиясы Алматы қ. Мелеагр жөніндегі а...
15101. Француз романтизмі 50 KB
  ХІХ ғасырдағы шетел әдебиетінің тарихы Романтизм дәуірі Француз романтизмі Франциядағы романтизм тағдырының өзіндік ерекшелігі аталмыш жалпыеур