Gra zręcznościowa „Straszna Epidemia"  V1.2
Projekt Wizualizacja Danych Sensorycznych Kewin Gałuszka rok akademicki 2019/2020
mainwindow.cpp
Idź do dokumentacji tego pliku.
1 #include "mainwindow.h"
2 #include "ui_mainwindow.h"
3 #include "player.h"
4 #include "virus.h"
5 #include <QTimer>
6 #include <QObject>
7 #include<QGraphicsRectItem>
8 #include <QGraphicsScene>
9 #include <QDebug>
10 #include <QStackedWidget>
11 #include <qcustomplot.h>
12 #include "settings.h"
13 #include "usart.h"
14 #include <QGraphicsPixmapItem>
15 #include "syringe.h"
16 #include <QGraphicsPixmapItem>
17 
18 #include <QBrush>
19 #include<QImage>
20 
21 
22 MainWindow::MainWindow(QWidget *parent)
23  : QMainWindow(parent)
24  , ui(new Ui::MainWindow)
25 {
26  /* MAIN GAME SCENE */
27  ui->setupUi(this);
28  scene = new QGraphicsScene(this);
29 
30  ui -> game_window-> setScene(scene);
31 
32  setWindowTitle(tr("STRASZNA EPIDEMIA v1.2"));
33 
34  ui->plot_x->addGraph(0);
35  ui->plot_y->addGraph(0);
36  ui->plot_z->addGraph(0);
37 
38 
39  connect(&settings_window,SIGNAL(sig_usart_connect(QString)),&usart_connection,SLOT(slt_usart_connect(QString))); //connection usart connect signal and slot
40  connect(&settings_window,SIGNAL(sig_usart_disconnect()),&usart_connection,SLOT(slt_usart_disconnect())); //connection usart disconnect signal and slot
41  connect(&usart_connection,SIGNAL(sig_addToLogs(QString)),&settings_window,SLOT(slt_addToLogs(QString))); //connection add to logs signal and slot (term)
42  connect(&usart_connection,SIGNAL(sig_writeStatus(QString)),this,SLOT(slt_writeStatus(QString))); //connection add to logs signal and slot (term)
43  connect(&usart_connection,SIGNAL(sig_clearStatus()),this,SLOT(slt_clearStatus())); //connection add to logs signal and slot (term)
44  connect(&usart_connection,SIGNAL(plotData(QList<float>)),this,SLOT(makePlot(QList<float>))); //connection plotData and makePlot signal and slot
45  connect(this,SIGNAL(sig_win(int)),&win_window,SLOT(slt_win(int)));
46 
47  ui->b_pauza->setCheckable(true);
48 
49  player * player1 = new player(this); //create player
50  player1->setPos(230,300); //setting position
51  player1 -> setFlag(QGraphicsItem :: ItemIsFocusable);
52  player1 -> setFocus(); //player focusable
53  scene ->addItem(player1); //add player to scene
54  connect(&usart_connection,SIGNAL(moveData(int)),player1,SLOT(p_move(int)));
55  connect(&usart_connection,SIGNAL(shootData(int)),player1,SLOT(p_shoot(int)));
56 
57  QGraphicsView *view = new QGraphicsView(scene); //create view
58 
59  // view->setHorizontalScrollBarPolicy ( Qt::ScrollBarAlwaysOff ); //off scroll bars
60  // view->setVerticalScrollBarPolicy ( Qt::ScrollBarAlwaysOff );
61 
62  ui->status_window->clear(); //status_window initialization
63  slt_writeStatus("Nie połączono");
64 
65  view ->setFixedSize(800,600); //view and scene parameters
66  scene->setSceneRect(0,0,569,419);
67  scene->setBackgroundBrush(QBrush(QImage(":/img/background.jpg")));
68 
69 
70  QObject::connect(timer,SIGNAL(timeout()),player1,SLOT(spawn())); //spawning enemies
71  QObject::connect(timer_shoot,SIGNAL(timeout()),player1,SLOT(let_shoot()));
72 
73  timer_shoot->start(1);
74 
75 }
76 
78 {
79  delete ui;
80 }
81 
82 
83 void MainWindow::on_b_settings_clicked()
84 {
85  /* settings_window = new Settings(this); //create object
86  settings_window -> show();*/
87  settings_window.show();
88 
89 }
90 
91 void MainWindow::slt_writeStatus(QString message)
92 {
93  ui->status_window->append(message);
94  // statusBar()->showMessage(message);
95 }
96 
97 void MainWindow::slt_clearStatus()
98 {
99  ui->status_window->clear();
100  // qDebug() <<"Okno statusu wyczyszczone" ;
101 }
102 
103 void MainWindow::makePlot(QList<float> acc_dat)
104 {
105 
106  float tmp_x,tmp_y,tmp_z =0;
107 
108  tmp_x = acc_dat.at(0);
109  tmp_y = acc_dat.at(1);
110  tmp_z = acc_dat.at(2);
111 
112 
113 
114  ui->plot_x->graph(0)->addData(t_plot,tmp_x);
115  ui->plot_x->xAxis->setRange(t_plot-10, t_plot);
116  ui->plot_x->yAxis->setRange(-2,2);
117  ui->plot_x->replot();
118 
119 
120  ui->plot_y->graph(0)->addData(t_plot,tmp_y);
121  ui->plot_y->xAxis->setRange(t_plot-10, t_plot);
122  ui->plot_y->yAxis->setRange(-2,2);
123  ui->plot_y->replot();
124 
125  ui->plot_z->graph(0)->addData(t_plot,tmp_z);
126  ui->plot_z->xAxis->setRange(t_plot-10, t_plot);
127  ui->plot_z->yAxis->setRange(-2,2);
128  ui->plot_z->replot();
129 
130 
131  t_plot=t_plot+0.025;
132  // qDebug() <<"plot completed" ;
133 }
134 
135 void MainWindow::points_LCD()
136 {
137  points++;
138  ui->points_LCD->display(points);
139  qDebug() <<"POINT+1" ;
140 
141 }
142 
143 
144 void MainWindow::life_LCD()
145 {
146  if (life > 0){
147  life--;
148  }
149  ui->life_LCD->display(life);
150  qDebug() <<"LIFE-1" ;
151  if (life ==0){
152  timer->stop();
153  win_window.show();
154  emit sig_win(points);
155 
156  statusBar()->showMessage("Koniec gry!");
157  }
158 
159 
160 
161 }
162 
163 void MainWindow::on_b_start_clicked()
164 {
165  life = 5;
166  points =0;
167  ui->life_LCD->display(life);
168  ui->points_LCD->display(points);
169  timer->start(2000);
170  statusBar()->showMessage("W trakcie gry");
171 }
172 
173 void MainWindow::on_b_koniec_clicked()
174 {
175  timer->stop();
176  statusBar()->showMessage("Gra zakończona");
177 
178  win_window.show();
179  emit sig_win(points);
180  //tu okno wyświetlić
181  life = 0;
182  ui->life_LCD->display(life);
183 
184 }
185 
186 void MainWindow::plot_moveData(int Data)
187 {
188  qDebug()<< Data<< "data";
189 }
190 
191 void MainWindow::on_b_pauza_toggled(bool checked)
192 {
193  if(checked){
194  timer->stop();
195  statusBar()->showMessage("Gra przerwana");
196  }
197  else{
198  timer->start(2000);
199  }
200 }
qcustomplot.h
settings.h
MainWindow::life
int life
Liczba życia, które pozostało graczowi.
Definition: mainwindow.h:78
MainWindow::points
int points
Liczba punktów uzyskanych przez gracza.
Definition: mainwindow.h:74
player
Klasa player Klasa zawiera funkcje bezpośrednio związane z obsługą gracza i związanymi z nim funkcjon...
Definition: player.h:14
usart.h
virus.h
Ui
Definition: mainwindow.h:43
player.h
MainWindow::sig_win
void sig_win(int points)
Sygnał emitowany po zakończeniu rozgrywki, gdy ilość punktów życia spadnie do 0.
MainWindow::t_plot
float t_plot
Czas wykorzystywany do rysowania osi OX wykresów pomiaru przyspieszenia w jednostce [s].
Definition: mainwindow.h:70
MainWindow
Klasa MainWindow Klasa dziedzicząca QMainWindow, jest ona głównym oknem aplikacji Klasa zawiera info...
Definition: mainwindow.h:54
MainWindow::MainWindow
MainWindow(QWidget *parent=nullptr)
Konstruktor.
Definition: mainwindow.cpp:22
mainwindow.h
MainWindow::~MainWindow
~MainWindow()
Destruktor.
Definition: mainwindow.cpp:77
syringe.h