Hallo iedereen,
Ik ben bezig met een qt spel te maken. Tetris over het netwerk. Ik stuur bij elk keypressEvent de coordinaten van een tetrisblokje door via QtcpSocket. Elke keer als een blokje de onderkant bereikt stuur ik de coordinaten van heel het bord door. Dit is een array van 220 bytes dat ik doorstuur aan data.
Als ik alleen de coordinaten van mijn blokje doorstuur en het doorsturen van het het board in commentaar zet werkt alles. Het werkt eveneens als ik de coordinaten in commentaar zet en alleen de data van mijn board doorstuurt. Maar als ik beide doorstuur komt de data veel te laat aan. Het probleem duikt op nadat het eerste blokje de onderkant bereikt en dus de coordinaten van het hele board worden doorgestuurd. Dan komt de data vertraagd aan en dit word trager en trager. Ik weet echt niet meer waar het probleem zit. Ik heb alle signalen in commentaar gezet voor te troubleshooten maar ook dit werkt niet. Moet ik soms nog een buffer leegmaken van datastream?
Ik weet dat tcp checkt of de data is aangekomen maar 220 bytes om de halve seconden doorsturen moet nu toch wel doenbaar zijn.
P.S Excuses voor de niet zo duidelijke layout van mijn code. Dit komt door al het geknip en geplak van te troubleshooten.
Ik hoop dat iemand mij kan helpen.
Ik ben bezig met een qt spel te maken. Tetris over het netwerk. Ik stuur bij elk keypressEvent de coordinaten van een tetrisblokje door via QtcpSocket. Elke keer als een blokje de onderkant bereikt stuur ik de coordinaten van heel het bord door. Dit is een array van 220 bytes dat ik doorstuur aan data.
Als ik alleen de coordinaten van mijn blokje doorstuur en het doorsturen van het het board in commentaar zet werkt alles. Het werkt eveneens als ik de coordinaten in commentaar zet en alleen de data van mijn board doorstuurt. Maar als ik beide doorstuur komt de data veel te laat aan. Het probleem duikt op nadat het eerste blokje de onderkant bereikt en dus de coordinaten van het hele board worden doorgestuurd. Dan komt de data vertraagd aan en dit word trager en trager. Ik weet echt niet meer waar het probleem zit. Ik heb alle signalen in commentaar gezet voor te troubleshooten maar ook dit werkt niet. Moet ik soms nog een buffer leegmaken van datastream?
Ik weet dat tcp checkt of de data is aangekomen maar 220 bytes om de halve seconden doorsturen moet nu toch wel doenbaar zijn.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| void client::get_game_data() { QByteArray data_board; data_board.resize(220); QByteArray data; data.resize(8); QDataStream in(tcp_socket); QString id_action; quint8 corx,cory,shape; in >> id_action; qDebug()<<"id action" << id_action; if(id_action=="start") { emit start_game_command(); qDebug()<<"game zou moeten starten"; } else if(id_action=="naam") { in >> tegenspeler_naam; } else if(id_action == "bord") <--- dit werkt niet goed { in >> data_board; // emit client_set_board(data_board); qDebug()<<"gebeurt"; // emit update_board(); } else if(id_action=="cor") <--- dit werkt niet goed { in >> corx >> cory >> shape ; in >> data; qDebug()<< "status is = "<< in.status(); // emit set_piece(corx,cory,shape); // qDebug()<< "corx : "<<corx<<"cory : "<<cory<<"shape : "<<shape; int k = 0; for(int i=0;i<4;i++) { for(int j=0;j<2;j++) { set_coordinates(i,j,(int) data[k]); k++; } } } // emit update_board(); } |
P.S Excuses voor de niet zo duidelijke layout van mijn code. Dit komt door al het geknip en geplak van te troubleshooten.
Ik hoop dat iemand mij kan helpen.