5 #include "mainwindow.h"
7 // -1 om x <0 1 om x>0 och 0 annars
34 MainWindow::MainWindow(QWidget
*parent
)
35 : QMainWindow(parent
, 0)
39 connect(this,SIGNAL(nextPlayerSIG()),this,SLOT(nextPlayer()));
44 pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0));
45 pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0));
46 pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0));
47 pjaser
.push_back(Pjas(1)); pjaser
.push_back(Pjas(1)); pjaser
.push_back(Pjas(2));
48 pjaser
.push_back(Pjas(2)); pjaser
.push_back(Pjas(3)); pjaser
.push_back(Pjas(4));
49 pjaser
.push_back(Pjas(5)); pjaser
.push_back(Pjas(5)); pjaser
.push_back(Pjas(6));
50 pjaser
.push_back(Pjas(6)); pjaser
.push_back(Pjas(7));
52 pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0));
53 pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0));
54 pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0)); pjaser
.push_back(Pjas(0));
55 pjaser
.push_back(Pjas(1)); pjaser
.push_back(Pjas(1)); pjaser
.push_back(Pjas(2));
56 pjaser
.push_back(Pjas(2)); pjaser
.push_back(Pjas(3)); pjaser
.push_back(Pjas(4));
57 pjaser
.push_back(Pjas(5)); pjaser
.push_back(Pjas(5)); pjaser
.push_back(Pjas(6));
58 pjaser
.push_back(Pjas(6)); pjaser
.push_back(Pjas(7));
64 background
= QBrush(Qt::green
);
65 black
= QBrush(Qt::black
);
66 blackp
= QPen(Qt::black
);
70 sY
=100; // 1 börjar där uppe... -1 där nere
71 pjaser
[ 0].xpos
=0; pjaser
[ 0].ypos
=6; pjaser
[ 0].owner
=-1;
72 pjaser
[ 1].xpos
=1; pjaser
[ 1].ypos
=6; pjaser
[ 1].owner
=-1;
73 pjaser
[ 2].xpos
=2; pjaser
[ 2].ypos
=6; pjaser
[ 2].owner
=-1;
74 pjaser
[ 3].xpos
=3; pjaser
[ 3].ypos
=6; pjaser
[ 3].owner
=-1;
75 pjaser
[ 4].xpos
=4; pjaser
[ 4].ypos
=6; pjaser
[ 4].owner
=-1;
76 pjaser
[ 5].xpos
=5; pjaser
[ 5].ypos
=6; pjaser
[ 5].owner
=-1;
77 pjaser
[ 6].xpos
=6; pjaser
[ 6].ypos
=6; pjaser
[ 6].owner
=-1;
78 pjaser
[ 7].xpos
=7; pjaser
[ 7].ypos
=6; pjaser
[ 7].owner
=-1;
79 pjaser
[ 8].xpos
=8; pjaser
[ 8].ypos
=6; pjaser
[ 8].owner
=-1;
80 pjaser
[ 9].xpos
=0; pjaser
[ 9].ypos
=8; pjaser
[ 9].owner
=-1;
81 pjaser
[10].xpos
=8; pjaser
[10].ypos
=8; pjaser
[10].owner
=-1;
82 pjaser
[11].xpos
=1; pjaser
[11].ypos
=8; pjaser
[11].owner
=-1;
83 pjaser
[12].xpos
=7; pjaser
[12].ypos
=8; pjaser
[12].owner
=-1;
84 pjaser
[13].xpos
=1; pjaser
[13].ypos
=7; pjaser
[13].owner
=-1;
85 pjaser
[14].xpos
=7; pjaser
[14].ypos
=7; pjaser
[14].owner
=-1;
86 pjaser
[15].xpos
=2; pjaser
[15].ypos
=8; pjaser
[15].owner
=-1;
87 pjaser
[16].xpos
=6; pjaser
[16].ypos
=8; pjaser
[16].owner
=-1;
88 pjaser
[17].xpos
=3; pjaser
[17].ypos
=8; pjaser
[17].owner
=-1;
89 pjaser
[18].xpos
=5; pjaser
[18].ypos
=8; pjaser
[18].owner
=-1;
90 pjaser
[19].xpos
=4; pjaser
[19].ypos
=8; pjaser
[19].owner
=-1;
92 pjaser
[20].xpos
=0; pjaser
[20].ypos
=2; pjaser
[20].owner
=1;
93 pjaser
[21].xpos
=1; pjaser
[21].ypos
=2; pjaser
[21].owner
=1;
94 pjaser
[22].xpos
=2; pjaser
[22].ypos
=2; pjaser
[22].owner
=1;
95 pjaser
[23].xpos
=3; pjaser
[23].ypos
=2; pjaser
[23].owner
=1;
96 pjaser
[24].xpos
=4; pjaser
[24].ypos
=2; pjaser
[24].owner
=1;
97 pjaser
[25].xpos
=5; pjaser
[25].ypos
=2; pjaser
[25].owner
=1;
98 pjaser
[26].xpos
=6; pjaser
[26].ypos
=2; pjaser
[26].owner
=1;
99 pjaser
[27].xpos
=7; pjaser
[27].ypos
=2; pjaser
[27].owner
=1;
100 pjaser
[28].xpos
=8; pjaser
[28].ypos
=2; pjaser
[28].owner
=1;
101 pjaser
[29].xpos
=0; pjaser
[29].ypos
=0; pjaser
[29].owner
=1;
102 pjaser
[30].xpos
=8; pjaser
[30].ypos
=0; pjaser
[30].owner
=1;
103 pjaser
[31].xpos
=1; pjaser
[31].ypos
=0; pjaser
[31].owner
=1;
104 pjaser
[32].xpos
=7; pjaser
[32].ypos
=0; pjaser
[32].owner
=1;
105 pjaser
[33].xpos
=7; pjaser
[33].ypos
=1; pjaser
[33].owner
=1;
106 pjaser
[34].xpos
=1; pjaser
[34].ypos
=1; pjaser
[34].owner
=1;
107 pjaser
[35].xpos
=2; pjaser
[35].ypos
=0; pjaser
[35].owner
=1;
108 pjaser
[36].xpos
=6; pjaser
[36].ypos
=0; pjaser
[36].owner
=1;
109 pjaser
[37].xpos
=3; pjaser
[37].ypos
=0; pjaser
[37].owner
=1;
110 pjaser
[38].xpos
=5; pjaser
[38].ypos
=0; pjaser
[38].owner
=1;
111 pjaser
[39].xpos
=4; pjaser
[39].ypos
=0; pjaser
[39].owner
=1;
113 plan
[pjaser
[i
].xpos
*9+pjaser
[i
].ypos
]=i
;
115 // Load pictures, även de upp-och-ner-vända
116 bilder
.push_back(QImage("bonde.png"));
117 bilder
.push_back(QImage("lans.png"));
118 bilder
.push_back(QImage("hast.png"));
119 bilder
.push_back(QImage("lopare.png"));
120 bilder
.push_back(QImage("torn.png"));
121 bilder
.push_back(QImage("silver.png"));
122 bilder
.push_back(QImage("guld.png"));
123 bilder
.push_back(QImage("kung.png"));
124 bilder
.push_back(QImage("bondeP.png"));
125 bilder
.push_back(QImage("lansP.png"));
126 bilder
.push_back(QImage("hastP.png"));
127 bilder
.push_back(QImage("lopareP.png"));
128 bilder
.push_back(QImage("tornP.png"));
129 bilder
.push_back(QImage("silverP.png"));
131 bilder
.push_back(QImage("Ubonde.png"));
132 bilder
.push_back(QImage("Ulans.png"));
133 bilder
.push_back(QImage("Uhast.png"));
134 bilder
.push_back(QImage("Ulopare.png"));
135 bilder
.push_back(QImage("Utorn.png"));
136 bilder
.push_back(QImage("Usilver.png"));
137 bilder
.push_back(QImage("Uguld.png"));
138 bilder
.push_back(QImage("Ukung.png"));
139 bilder
.push_back(QImage("UbondeP.png"));
140 bilder
.push_back(QImage("UlansP.png"));
141 bilder
.push_back(QImage("UhastP.png"));
142 bilder
.push_back(QImage("UlopareP.png"));
143 bilder
.push_back(QImage("UtornP.png"));
144 bilder
.push_back(QImage("UsilverP.png"));
158 10 = prmotoed springare
164 connect(this,SIGNAL(showPlayerTurnSIG()),this,SLOT(showPlayerTurn()));
170 if (QMessageBox::Yes
== QMessageBox::question(this,"Är du server?","Skall du vara server eller ej?",QMessageBox::Yes
|QMessageBox::No
))
172 server
= new QTcpServer(this);
173 QList
<QHostAddress
> ipnr
= QNetworkInterface::allAddresses();
174 for (i
=0;i
<ipnr
.size();i
++)
176 if (ipnr
[i
] != QHostAddress::LocalHost
)
179 str
= QInputDialog::getText(this,"Är detta ditt IP?","Är detta ditt IP nummer?",QLineEdit::Normal
,serverIP
.toString());
180 server
->listen(serverIP
,serverPort
);
181 connect(server
,SIGNAL(newConnection()),this,SLOT(newPlayerConnected()));
186 str
= QInputDialog::getText(this,"Ange IP till din motståndares dator","Ange IP till din motståndares dator");
187 serverIP
= QHostAddress(str
);
188 socket
= new QTcpSocket(this);
189 socket
->connectToHost(serverIP
,serverPort
);
190 connect(socket
,SIGNAL(connected ()),this,SLOT(ConnectedToServer()));
192 connect(socket
, SIGNAL(readyRead()), this, SLOT(readMove()));
201 void MainWindow::ConnectedToServer()
203 qDebug()<<"Connectade till server";
206 void MainWindow::newPlayerConnected()
208 qDebug()<<"någon connnectade till mig. Ah! Det är min gamla nemesis.";
209 client
= server
->nextPendingConnection();
210 connect(client
, SIGNAL(readyRead()), this, SLOT(readMove()));
213 void MainWindow::showPlayerTurn()
216 ui
.vemstur
->setText("EJ din tur");
218 ui
.vemstur
->setText("Din tur");
221 void MainWindow::reloadPictures()
224 bilder
.push_back(QImage("bonde.png"));
225 bilder
.push_back(QImage("lans.png"));
226 bilder
.push_back(QImage("hast.png"));
227 bilder
.push_back(QImage("lopare.png"));
228 bilder
.push_back(QImage("torn.png"));
229 bilder
.push_back(QImage("silver.png"));
230 bilder
.push_back(QImage("guld.png"));
231 bilder
.push_back(QImage("kung.png"));
232 bilder
.push_back(QImage("bondeP.png"));
233 bilder
.push_back(QImage("lopareP.png"));
234 bilder
.push_back(QImage("tornP.png"));
236 bilder
.push_back(QImage("Ubonde.png"));
237 bilder
.push_back(QImage("Ulans.png"));
238 bilder
.push_back(QImage("Uhast.png"));
239 bilder
.push_back(QImage("Ulopare.png"));
240 bilder
.push_back(QImage("Utorn.png"));
241 bilder
.push_back(QImage("Usilver.png"));
242 bilder
.push_back(QImage("Uguld.png"));
243 bilder
.push_back(QImage("Ukung.png"));
244 bilder
.push_back(QImage("UbondeP.png"));
245 bilder
.push_back(QImage("UlopareP.png"));
246 bilder
.push_back(QImage("UtornP.png"));
247 for (int i
=0; i
<bilder
.size();i
++)
249 bilder
[i
] = bilder
[i
].scaled(sX
,sY
);
253 void MainWindow::paintEvent(QPaintEvent
* parent
)
255 qDebug()<<"Börja rita...";
257 p
.fillRect(0,0,sX
*9,sY
*9,background
);
263 if (pjaser
[i
].outside
)
265 p
.drawImage(pjaser
[i
].xpos
*sX
, pjaser
[i
].ypos
*sY
,bilder
[pjaser
[i
].picture()]);
269 p
.drawImage(pjaser
[i
].xpos
*sX
, pjaser
[i
].ypos
*sY
,bilder
[pjaser
[i
].picture()]);
276 p
.drawLine(x
*sX
,0,x
*sX
,y
*sY
);
277 p
.drawLine(0,y
*sY
,x
*sX
,y
*sY
);
279 if (clX
!= -1 && clY
!= -1)
282 p
.drawRect(clX
*sX
,clY
*sY
,sX
,sY
);
287 if (schackadspelare
== -1)
295 for (i
=0;i
<schackare
.size();i
++)
297 x
=pjaser
[schackare
[i
]].xpos
;
298 y
=pjaser
[schackare
[i
]].ypos
;
300 qDebug()<<"rita schack : "<<x
<<y
;
301 p
.drawLine(x
*sX
+sX
/2,y
*sY
+sY
/2,pjaser
[kung
].xpos
*sX
+sX
/2,pjaser
[kung
].ypos
*sY
+sY
/2);
303 qDebug()<<".....sluta rita";
306 void MainWindow::gameOver()
309 QMessageBox::information(this,"Spelet slut","Datorn vann");
311 QMessageBox::information(this,"Spelet slut","Du vann");
315 void MainWindow::setStarter()
319 current
= -1; // server börjar alltid :-D
321 // TODO Fråga om handikapp m.m.
336 void MainWindow::mousePressEvent(QMouseEvent
* event
)
343 int xpos
= event
->x();
344 int ypos
= event
->y();
347 if (xpos
>=0 && xpos
<=8 && ypos
>=0 && ypos
<=8)
349 if (clX
== -1) // inget klickat tidigare och inte tom ruta
351 if (plan
[xpos
*9+ypos
] != -1 && pjaser
[plan
[xpos
*9+ypos
]].owner
== current
)
355 //ui.move->setVisible(false);
358 else // has previously clicked figure
362 if (stopx
==clX
&& stopy
==clY
)
365 clY
= -1; // "unselect" the last click
369 if (clX
>9) // droppa pjäs
372 typ
= pjaser
[plan
[clX
*9+clY
]].typ
;
376 if ( typ
>2 || ( (typ
== 0 || typ
== 1) && clY
!= 4+4*current
) ||
377 (typ
== 2 && clY
!= 4+3*current
) )
382 if (plan
[stopx
*9+a
]!= -1 && pjaser
[plan
[stopx
*9+a
]].typ
==0 && pjaser
[plan
[stopx
*9+a
]].owner
==current
)
386 doDrop(current
,clX
,clY
,stopx
,stopy
);
393 if (plan
[stopx
*9+stopy
] == -1) // tomt här
395 if ( checkMove(current
,clX
,clY
,stopx
,stopy
,true) )
400 else if (pjaser
[plan
[stopx
*9+stopy
]].owner
== current
)
402 clX
= xpos
; // byt pjäs
405 else // C H A R G E !!!
407 if (checkMove(current
,clX
,clY
,stopx
,stopy
,true))
416 else // klickade utanför spelplanen
419 if (pos
<300 && plan
[pos
] != -1 && pjaser
[plan
[pos
]].owner
== current
)
421 //flytta in pjäsen om det nästa gång klickas på ledig ruta
434 // player är oftast current som skickas. checkschack säger om vi skall kolla om det är schack
435 bool MainWindow::checkMove(int player
, int x1
,int y1
,int x2
,int y2
,bool checkschack
) //kolla om gilltigt drag
437 // qDebug()<<"Spelare "<<player<<" vill flytta från "<<x1<<y1<<" till "<<x2<<y2;
439 int typ
= pjaser
[plan
[pjas
]].typ
;
441 int fiende
= plan
[x2
*9+y2
]; // id på den som står på mål rutan
442 bool dragOK
=true; // om draget, rent flyttningsmässigt är ok, kollar ej om schack hot avvärjs
445 dragOK
= true; // behöver ej kolla om tomma rutor
446 else if (pjaser
[fiende
].owner
== player
)
447 return false; // där fanns en vänskaplig pjäs
449 // OBS! dragOK måste ha true värde när vi går in här...
450 // kolla om motståndaren är i schack, då är partiet vunnet!
451 // kolla om jag är i schack
454 // Kolla om draget är giltigt
459 // Varje if-sats skall sätta true på dragOK variabeln eller returnera false direkt
460 if (typ
== 2) // häst
462 dragOK
= ( (abs(x1
-x2
)==1) && (y2
== y1
+2*player
)); // okflytt flytt+2 för uppe, -2 för nere
464 else if (typ
== 0) // bonde
466 dragOK
= (dx
==0) && (dy
== player
); // smidigt med -1 och 1 parametrar för spelaren
468 else if (typ
== 1) // lans
470 if (dx
!=0) return false;
471 for (y
=y1
+player
; dragOK
&& y
!=y2
; y
=y
+player
)
473 dragOK
= plan
[x1
*9 + y
] == -1;
476 else if (typ
== 3 ) // löpare
478 if (abs(dx
) != abs(dy
))
484 while (x
!=x2
&& dragOK
)
486 dragOK
= plan
[x
*9+y
] == -1;
491 else if (typ
== 4) // torn
497 while (x
!=x2
&& dragOK
)
499 dragOK
= plan
[x
*9+y1
] == -1;
507 while (y
!=y2
&& dragOK
)
509 dragOK
= plan
[x1
*9+y
] == -1;
516 else if (typ
== 5) // silver
518 if (abs(dx
)>1 || abs(dy
)>1 || dy
== 0 || (dx
==0 && dy
== -player
) )
520 // resten är ok if (abs(dy*dx) == 1 || (dx==0 && dy=sgn(current) ) )
523 else if (typ
== 6 || typ
== 8 || typ
== 9 || typ
== 10 || typ
== 13) // guld
525 if (abs(dx
)>1 || abs(dy
)>1 || ( abs(dx
)==1 && dy
== -player
) )
527 // resten är ok att göra.
529 else if (typ
== 7) // knugen
531 if (abs(dx
)>1 || abs(dy
)>1 ||
532 abs(pjaser
[19].xpos
-pjaser
[39].xpos
)<2 &&
533 abs(pjaser
[19].ypos
-pjaser
[39].ypos
)<2 ) // kolla så inte för nära andra kungen)
535 // allt annat innebär att kungen flyttar 1 steg eftersom vi redan har gallrat bort
536 // möjligheten att stå kvar på samma plats
538 else if (typ
== 11) //promoted löpare
540 if (abs(dx
)>1 || abs(dy
)>1)
542 if (abs(dx
) != abs(dy
))
548 while (x
!=x1
&& dragOK
)
550 dragOK
= plan
[x
*9+y
] == -1;
555 // else, annars är det ett drag som godkänns för det är precis som för en kung
557 else if (typ
== 12) // promoted torn
559 if (abs(dx
)>1 || abs(dy
)>1 )
565 while (x
!=x2
&& dragOK
)
567 dragOK
= plan
[x
*9+y1
] == -1;
575 while (y
!=y2
&& dragOK
)
577 dragOK
= plan
[x1
*9+y
] == -1;
583 }//else, ok, eftersom det är som ett kung drag.
591 //qDebug()<<"Draget är INTE ok, gör om, gör rätt!";
595 // kolla om schackhot avvärjt m.m. TODO stäng av ritningen samtidigt?
596 // First, save some stuff for undo
597 // Make a pseudomove...
598 // pjas = x1*9+y1 piece
601 int fplats
= x2
*9+y2
;
602 int fnummer
= plan
[fplats
];
604 int nummer
= plan
[plats
];
607 pjaser
[fnummer
].owner
= current
;
608 pjaser
[fnummer
].outside
= true;
610 Pjas old
= pjaser
[nummer
]; // kopiera över all data
612 plan
[fplats
] = nummer
;
614 pjaser
[nummer
].xpos
= x2
;
615 pjaser
[nummer
].ypos
= y2
;
617 if (isSchacked(current
,false))
620 ui
.message
->setText("Du får ej flytta så för då blir du schackad");
625 ui
.message
->setText("Draget är okej");
631 pjaser
[fnummer
].owner
= -current
;
632 pjaser
[fnummer
].outside
= false;
634 pjaser
[nummer
] = old
;
635 plan
[fplats
] =fnummer
;
636 plan
[plats
] = nummer
;
643 Undersök om spelaren player står i schack.
644 Sätter värden på schackadspelare och schackare listan om någon är schackad om setParameters
647 bool MainWindow::isSchacked(int player
,bool setParameters
)
649 // Kolla om någon av moståndar pjäserna kan nå kungen som tillhör player
650 //qDebug()<<"\t\tLetar schack";
656 kx
= pjaser
[kung
].xpos
;
657 ky
= pjaser
[kung
].ypos
;
658 bool schack
=false; // om schack
661 schackare
.clear(); // ta bort alla tidigare schackare
666 if ( (i
!= 19) && (pjaser
[i
].owner
!= player
) && (!pjaser
[i
].outside
) )// pjäs i tillhör den andra
668 // qDebug()<<"\t\tFörsök med pjäs "<<i<<" i position" <<pjaser[i].xpos<<pjaser[i].ypos<<" kung i "<<kx<<ky;
669 if ( checkMove(-player
,pjaser
[i
].xpos
,pjaser
[i
].ypos
,kx
,ky
,false) )
670 { // vi kunde nå kungen med pjäs i
674 schackadspelare
= player
;
675 schackare
.push_back(i
);
680 //qDebug()<<"\t\tSlutat leta schack";
684 void MainWindow::resizeEvent(QResizeEvent
* event
)
686 sX
= (int)((width()-1)/14);
687 sY
= (int)((height()-1)/9);
695 void MainWindow::doMove() // do the move
698 int piece
= plan
[clX
*9+clY
]; //pjäsen där
699 if (plan
[stopx
*9+stopy
] != -1)
700 { // ta pjäs, redan kollat så att detta är möjligt.
701 int tagen
= plan
[stopx
*9+stopy
];
703 x
=10; y
=4-4*current
; i
=0;
704 while (plan
[x
*9+y
]!= -1)
711 pjaser
[tagen
].xpos
= x
;
712 pjaser
[tagen
].ypos
= y
;
714 pjaser
[tagen
].owner
= current
;
715 pjaser
[tagen
].promoted
= false;
716 pjaser
[tagen
].outside
= true;
717 if (pjaser
[tagen
].typ
>7)
718 pjaser
[tagen
].typ
-= 8; // ändra ner typ till lägre grad
720 plan
[stopx
*9 +stopy
] = piece
;
721 pjaser
[piece
].xpos
= stopx
;
722 pjaser
[piece
].ypos
= stopy
;
724 plan
[clX
*9+clY
] = -1;
725 // Kolla om vi kan promota
726 if ( ((current
==-1 && stopy
<=2) || (current
==1 && stopy
>=6) ) && pjaser
[piece
].typ
<6 && askIfPromote(did_promote
) )
728 pjaser
[piece
].typ
+= 8;
734 // Just nu är det current som gör draget, kolla om -current är schackad
736 if (isSchacked(-current
,true)) // sätt schack flaggor
738 ui
.message
->setText("Du är schackad");
740 ui
.message
->setText("Datorn är schackad");
742 ui
.message
->setText("");
744 emit
nextPlayerSIG();
747 bool MainWindow::askIfPromote(bool other_promoted
) //
751 return other_promoted
;
755 return (QMessageBox::question(this,"Vill du promota?","Vill du promota? Det brukar vara bäst att göra?",QMessageBox::Yes
|QMessageBox::No
,QMessageBox::Yes
) == QMessageBox::Yes
);
760 void MainWindow::doDrop(int current
,int clX
,int clY
,int stopx
,int stopy
)
762 int plats
= clX
*9+clY
;
763 int fplats
= stopx
*9+stopy
;
764 int nummer
= plan
[plats
];
765 Pjas old
= pjaser
[nummer
];
769 pjaser
[nummer
].outside
=false;
770 pjaser
[nummer
].promoted
= false;
771 pjaser
[nummer
].xpos
=stopx
;
772 pjaser
[nummer
].ypos
=stopy
;
773 if (isSchacked(current
,false))
775 // draget hjälpte inte, du är fortfarande schackad
782 isSchacked(-current
,true); // kolla om den andra är schackad
784 emit
nextPlayerSIG();
788 void MainWindow::readMove()
793 in
.setDevice(client
);
794 in
.setVersion(QDataStream::Qt_4_0
);
795 if (client
->bytesAvailable()<5*(int)sizeof(qint32
))
800 in
.setDevice(socket
);
801 in
.setVersion(QDataStream::Qt_4_0
);
802 if (socket
->bytesAvailable()<5*(int)sizeof(qint32
))
808 in
>>clX
>>clY
>>stopx
>>stopy
>>promote
;
809 did_promote
= (promote
!=0);
810 qDebug()<<"Tog emot "<<clX
<<clY
<<stopx
<<stopy
<<promote
;
815 clX
=8-clX
; // spegelvänt!
816 stopy
=8-stopy
; // de är ju upp och ner!
824 stopy
=8-stopy
; // de är ju upp och ner!
826 // Hur fan blir det med drop och stopy???
827 doDrop(current
, clX
,clY
,stopx
,stopy
);
831 void MainWindow::nextPlayer()
835 if (current
== -1) // Det var din tur
837 qDebug()<<"kom in in nextPlayer och det är current = "<<current
;
839 // förbered för att skicka data
842 QDataStream
out(&block
, QIODevice::WriteOnly
);
843 out
.setVersion(QDataStream::Qt_4_0
);
844 out
<<(qint32
)clX
<<(qint32
)clY
<<(qint32
)stopx
<<(qint32
)stopy
;
854 client
->write(block
);
858 socket
->write(block
);
860 qDebug()<<"skickade "<<clX
<<clY
<<stopx
<<stopy
<<"1 eller 0";
864 emit
showPlayerTurnSIG();
868 ignoreClick
=false; // det var den andres tur, nu är det din tur
872 qDebug()<<"Lämnar nextPlayer() och på denna dator är det nu current = "<<current
;
873 emit
showPlayerTurnSIG();