-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshatranj.cpp
More file actions
8731 lines (7970 loc) · 384 KB
/
shatranj.cpp
File metadata and controls
8731 lines (7970 loc) · 384 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// shatranj.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include<time.h>
using namespace std;
char map[6][6];
bool readfile(char, char map[6][6], char*);
int writefile(char, char map[6][6], char*);
bool sarbaz_move(int satr, int sotoon, char map[6][6]);
bool sarbaz_2_move(int satr, int sotoon, char map[6][6]);
void checkplayer(char, int[], int[], int[], int[], int[], int[], int[], int[], char[], char map[6][6], const int, const int);
void mohrehayeharif(char, char*, char*, int[], int[], int[], int[], int[], int[], int[], int[], char map[6][6], int, int);
bool zarbsarbaz(int satr, int sotoon, char sarnam, char costnn, char map[6][6], char*khodi, int*satrsarbazjadid, int* sotoonsarbazjadid, bool khataryab);
bool zarbsarbaz2(int satr, int sotoon, char sarnam, char costnn, char map[6][6], char*khodi, int*satrsarbazjadid, int* sotoonsarbazjadid, bool khataryab);
bool sarbaz_move(int, int, char map[6][6]);
bool sarbaz_can_move(char, int, int, char map[6][6]);
bool sarbaz_easy(int, int, char, char map[6][6], char*);
bool sarbaz_2_easy(int, int, char, char map[6][6], char*);
bool asb_easy(int*, int, int, char, char map[6][6], char*, int*, int*, bool);
bool vazir_easy(int* meghdarforkhatar, char setplayer, int *jahat, int satr, int sotoon, char sarnam, bool sarbaz1harif, bool sarbaz2harif, bool asbharif, bool vazirharif, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, char map[6][6], char* khodi, int* vazirnewsatr, int* vazirnewsotoon, int khodicount, bool khataryab);//is_our dare(be return falsash dobare deghat kon)
bool checkzarb(char setplayer, int satr, int sotoon, char sarnam, int sarbaz1harif, int sarbaz2harif, int asbharif, int vazirharif, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, char map[6][6]);
void vazir_easy_easy(int* jahat, int satr, int sotoon, int jahathayemojaz[], int meghdarharekat[], int khodicount, char* khodi, int satrmohre, int sotoonmohre, char sarnammohre);
//bool vazir_easy(int satr, int sotoon, char sarnam, char map[6][6], char* khodi, int* khatar, int* meghdarharekati = 0, bool khataryab = false);
bool zarbasb(int satr, int sotoon, char sarnam, char costnn, char map[6][6], char* khodi, int* satrasbjadid, int* sotoonasbjadid, bool khataryab = false);
bool vazir_move(int satr, int sotoon, int jahat, int i, char map[6][6]);
bool zarbvazir(int satr, int sotoon, char sarnam, char costnn, char map[6][6], char* khodi, int* satrjadid, int* sotoonjadid, bool khataryab);
void aya_zadan_ghable_farar_amn_ast(int harifsatr, int harifsotoon, char setplayer, int mohafezchist, int satrmohrekhodi, int sotoonmohrekhodi, char map[6][6], char copyofmap1[6][6], char nammohre);
bool is_our(char, char*);
bool checkzarbsarbaz(char setplayer, int satrharif, int sotoonharif, int satrmahaljadid, int sotoonmahalejadid, char map[6][6], char);
bool checkzarbasb(int satrharif, int sotoonharif, int satrmahaljadid, int sotoonmahaljadid);
bool checkzarbvazir(int satrharif, int sotoonharif, int satrmahaljadid, int sotoonmahaljadid, char[6][6], char);
bool vazir_dar_khatar_ast(char setplayer, int satrghararbeharekat, int sotoonghararbeharekat, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, int vazirsatr, int vazirsotoon, char map[6][6]);
bool asb_dar_khatar_ast(int setplayer, int satrghararbeharekat, int sotoonghararbeharekat, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, int asbsatr, int asbsotoon, char map[6][6]);
bool mohafez_darad(char setplayer, int mohafezchist, int satrmohafez, int sotoonmohafez, int satrmahaljadid, int sotoonmahaljadid, char map[6][6]);
bool mohafez_darad_2(int vazirnewsatr, int vazirnewsotoon, char setplayer, int mohafezchist, int satrmohafez, int sotoonmohafez, int satrmahaljadid, int sotoonmahaljadid, char map[6][6], char vazirnammm);
void search_mohre_darkhatar(char setplayer, int sarbaz1mojood, int sarbaz2mojood, int asbmojood, int vazirmojood, int sarbaz1harif, int sarbaz2harif, int asbharif, int vazirharif, int asbsatr, int asbsotoon, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, int sarbaz1satr, int sarbaz1sotoon, int sarbaz2sotoon, int sarbaz1nam, int sarbaz2satr, int sarbaz2nam, int vazirsatr, int vazirsotoon, int asbnam, char vazirnammm, bool* sarbaz1darkhatar, bool* sarbaz2darkhatar, bool* asbdarkhatar, bool* vazirdarkhatar);
bool vazir_easy_for_khatar(int satrmohre, int sotoonmohre, char* khodi, int jahat, int vazirsatr, int vazirsotoon, char sarnam, int meghdarharekat, char setplayer, int sarbaz1mojood, int sarbaz2mojood, int asbmojood, int sarbaz1satr, int sarbaz1sotoon, int sarbaz2satr, int sarbaz2sotoon, int asbsatr, int asbsotoon, int sarbaz1harif, int sarbaz2harif, int asbharif, int vazirharif, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, char sarbaz1nam, char sarbaz2nam, char asbnam);
bool mohafez_ghabelzadane(char sarnammohremohafez, int satrmohreavvali, int sotoonmohreavvali, char setplayer, int satrmohafez, int sotoonmohafez, int satrmahaljadid, int sotoonmahaljadid, char map[6][6], int sarbaz1harif,
int sarbaz2harif, int asbharif, int vazirharif, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon
, int vazirharifsatr, int vazirharifsotoon);
bool mohre_kojaye_vazire(int* jahatmohrekhodi, int satrmohre, int sotoonmohre, int satrvazir, int sotoonvazir, char map[6][6]);
void aya_mitavanad_sade_harekat(char setplayer, int noemohre, int satrmohre, int sotoonmohre, int sarbaz1satr, int sarbaz1sotoon, int sarbaz2satr, int sarbaz2sotoon, int asbsatr, int asbsotoon, int vazirsatr, int vazirsotoon, bool* aya_mohre_mohafez_s1, bool* aya_mohre_mohafez_s2, bool* aya_mohre_mohafez_asb, bool* aya_mohre_mohafez_vazir, char map[6][6]);
bool can_zarb_for_tahdid(char setplayer, int noemohre, int sarbaz1newsatr, int sarbaz1newsotoon, char sarbaz1nam, int sarbaz2newsatr, int sarbaz2newsotoon
, char sarbaz2nam, int asbnewsatr, int asbnewsotoon, int vazirnewsatr, int vazirnewsotoon, char vazirnammm, int sarbaz1harif, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harif
, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharif, int asbharifsatr, int asbharifsotoon, int vazirharif, int vazirharifsatr, int vazirharifsotoon);
//bool vazir_trial_func(int,int,int,int,int*,int*);
int main(int argc, char* argv[])
{
/*
//harekat vazir moshkel dare(mipare)//ehtemalan hal shode
//player1 midim meghdar sotoon manfi mishe
//harekat sade darnazar nagereftim
//khali kardan mohre ghabli bara hame check kon
//harekat sade vazir moonde
//true bedi tabe tamoom mishe bebin oonjahaei ke ++ dadi tadakhol nagire havaset bashe be inke akolad kojas shyd dorost bashe
//tabe harekat sade vazir neveshte shode ama takmil(argomana ina) mikhad
//bad be in fekr bash ke ba harekat sade chikar koni
//hatman az ghabl check beshe
//badha baraye shomaresh anasor araye az sizeof estefade kon
//check returnaye asb easy(ta inja benazaram mohem nist)
//KHATE572
//harekat sade anjam nmishe
//tabe zarb vazir moshkel dare----hal shod taghriban
//tabesadef harekat eshtebah mizane
// srand(time(0));
//int player = 1 + rand() % 2;
//easya moshkel daran asb va sarbaz(2ta baham miran)
//for vazir easy kar nmikone
//do moshkel asasi vazireasy az mohreha mipare
//yeharekat asb eshtebah chap be bala
//b to harekat sade bazi vaghta az naghshe pak mishe
//zarb asb to ye ja mipare
//zarb vazir khub kar nmikone
//maghadiri ke be tabe midio deghat konnn/
//zarbsarbaz mipare
//age mogheyat bashe roo harekat sade asb klid mikone ye shomarande mikhad
//tabezarbvazir darjahat rast khali ejra nmishe
//tabe easy vazir az chap be rast moshkel darad
//mogheyat khatar baraye asb moonde ye taghirati too asb_easy() dadam ama engar karsaz nist
//hamin asbo mogheyate khatar besazim halle
//baragard va oonjahaei ke ba while va mote m kar kardi check kon ke <5 va >0 bashe
*/
char* filename = argv[2];
char player = *argv[1];
//int player = 2;
if (readfile(player, map, filename))
{
writefile(player, map, filename);
}
else
cout << "error";
}
bool readfile(char setplayer, char map[6][6], char* fname)
{
char ch = 'k';
char mohre[8];
int ii = 0, cj = 0, dj = 0;
int a[2] = { 0 }, b[2] = { 0 }, e[2] = { 0 }, f[2] = { 0 }, c1[2] = { 0 }, c2[2] = { 0 }, d1[2] = { 0 }, d2[2] = { 0 };
int m1 = 0, m2 = 0;//baraye dashtan tedad mohrehaye har 2bazikon
ifstream in(fname, ios::in);
if (!in)
cout << "Error For Read File";
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
in >> ch;
map[i][j] = ch;
if (ch == 'a')
{
mohre[ii] = 'a';
a[0] = i;
a[1] = j;
ii++;
m1++;
}
else if (ch == 'b')
{
mohre[ii] = 'b';
b[0] = i;
b[1] = j;
ii++;
m2++;
}
else if (ch == 'e')
{
mohre[ii] = 'e';
e[0] = i;
e[1] = j;
ii++;
m1++;
}
else if (ch == 'f')
{
mohre[ii] = 'f';
f[0] = i;
f[1] = j;
ii++;
m2++;
}
else if (ch == 'c'&&cj == 0)//cj baraye in ghozashtam ta tashkhis bede sarbaz1 ya 2
{
mohre[ii] = 'g';
//faghat characteresho avaz kardm
c1[0] = i;
c1[1] = j;
ii++;
cj++;
m1++;
}
else if (ch == 'c')
{
mohre[ii] = 'h';
c2[0] = i;
c2[1] = j;
ii++;
m1++;
}
else if (ch == 'd'&&dj == 0)
{
mohre[ii] = 'k';
d1[0] = i;
d1[1] = j;
ii++;
dj++;
m2++;
}
else if (ch == 'd')
{
mohre[ii] = 'l';
d2[0] = i;
d2[1] = j;
ii++;
m2++;
}
}
}
//cout << a[1];
//for (int cc = 0; cc < m1 + m2; cc++)
//cout << mohre[cc]<<endl;
////cin >> mohre;
//cout << "m1" << m1;
checkplayer(setplayer, e, f, a, b, c1, c2, d1, d2, mohre, map, m1, m2);
return true;
}
void checkplayer(char setplayer, int e[], int f[], int a[], int b[], int c1[], int c2[], int d1[], int d2[], char mohre[], char map[6][6], const int m1, const int m2)
{
int harifcount = 0, khodicount = 0;
char* gp1;
gp1 = new char[m1];
char* gp2;
gp2 = new char[m2];
//char gp1[m1];
//char gp2[m2];
int ii = 0, iii = 0;
char* khodi;
char* harif;
//if (setplayer == '1')
// MovePlayer1(map);
//else
// MovePlayer2(map);
for (int i = 0; i <m1 + m2; i++)
{
if (mohre[i] == 'a' || mohre[i] == 'e' || mohre[i] == 'g' || mohre[i] == 'h')
{
gp1[ii] = mohre[i];
ii++;
}
else if (mohre[i] == 'b' || mohre[i] == 'f' || mohre[i] == 'k' || mohre[i] == 'l')
{
gp2[iii] = mohre[i];
iii++;
}
}
if (setplayer == '1')
{
khodi = gp1; harif = gp2;
khodicount = m1;
harifcount = m2;
}
else { khodi = gp2; harif = gp1; khodicount = m2; harifcount = m1; }
//mohrehaye harifo az inja seda bezan
//cout << harif[0];
//cin >> khodi;
mohrehayeharif(setplayer, harif, khodi, e, f, a, +b, c1, c2, d1, d2, map, khodicount, harifcount);
}
void mohrehayeharif(char setplayer, char* harif, char* khodi, int e[], int f[], int a[], int b[], int c1[], int c2[], int d1[], int d2[], char map[6][6], int khodicount, int harifcount)
{
bool sarbaz1, sarbaz2 = false, asb = false, vazir = false;
bool sarbaz1mojood = false, sarbaz2mojood = false, asbmojood = false, vazirmojood = false;//baraye vojood dashtan ya nadashtan mohrehaye khodi
char costn[4];
int cost[4] = { 0 };
int satr = 0, sotoon = 0;
// char sarsarnam, vazirsarnam;
//char asbsarnam;
char sarbaz1nam, sarbaz2nam, asbnam, vazirnammm;
int sarbaz1satr = 0, sarbaz1sotoon = 0, sarbaz2satr = 0, sarbaz2sotoon = 0, asbsatr = 0, asbsotoon = 0, vazirsatr = 0, vazirsotoon = 0;
char vazirharifnam, asbharifnam, sarbaz1harifnam, sarbaz2harifnam;
int vazirharifsatr, vazirharifsotoon, asbharifsatr, asbharifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon;//gereftan ettelat harif
bool vazirharif = false, asbharif = false, sarbaz1harif = false, sarbaz2harif = false;//check mojoodiate mohrehaye harif
bool sarbaz1foreasy = false, sarbaz2foreasy = false, asbforeasy = false, vazirforeasy = false;
bool cangofromsarbaz1 = false;
bool cangofromsarbaz2 = false;
bool cangofromasb = false;
bool cangofromvazir = false;
if (!sarbaz1harif)
cangofromsarbaz1 = true;
if (!sarbaz2harif)
cangofromsarbaz2 = true;
if (!asbharif)
cangofromasb = true;
if (!vazirharif)
cangofromvazir = true;
for (int i = 0; i < harifcount; i++)
{
if (harif[i] == 'a' || harif[i] == 'b') {
vazirharif = true;
vazirharifnam = harif[i];
if (harif[i] == 'a') {
vazirharifsatr = a[0];
vazirharifsotoon = a[1];
}
else if (harif[i] == 'b')
{
vazirharifsatr = b[0];
vazirharifsotoon = b[1];
}
cost[0] = 15;
costn[0] = harif[i];
}
if (harif[i] == 'e' || harif[i] == 'f') {
asbharif = true;
asbharifnam = harif[i];
if (harif[i] == 'e') {
asbharifsatr = e[0];
asbharifsotoon = e[1];
}
else if (harif[i] == 'f') {
asbharifsatr = f[0];
asbharifsotoon = f[1];
}
cost[1] = 10;
costn[1] = harif[i];
}
// if (harif[i] == 'g' || harif[i] == 'h' || harif[i] == 'k' || harif[i] == 'l') {
// cost[2] = 5;
//costn[2] = harif[i];
// }
if (harif[i] == 'g')
{
sarbaz1harif = true;
sarbaz1harifnam = harif[i];
sarbaz1harifsatr = c1[0];
sarbaz1harifsotoon = c1[1];
cost[2] = 5;
costn[2] = 'c';
}
if (harif[i] == 'k')
{
sarbaz1harif = true;
sarbaz1harifnam = harif[i];
sarbaz1harifsatr = d1[0];
sarbaz1harifsotoon = d1[1];
cost[2] = 5;
costn[2] = 'd';
}
if (harif[i] == 'h')
{
sarbaz2harif = true;
sarbaz2harifnam = harif[i];
sarbaz2harifsatr = c2[0];
sarbaz2harifsotoon = c2[1];
cost[3] = 4;
costn[3] = 'c';
}
if (harif[i] == 'l')
{
sarbaz2harif = true;
sarbaz2harifnam = harif[i];
sarbaz2harifsatr = d2[0];
sarbaz2harifsotoon = d2[1];
cost[3] = 4;
costn[3] = 'd';
}
}
for (int j = 0; j < khodicount; j++) {
if (khodi[j] == 'g') {
sarbaz1nam = 'c';
sarbaz1satr = c1[0];
sarbaz1sotoon = c1[1];
sarbaz1mojood = true;
}
else if (khodi[j] == 'h')
{
sarbaz2nam = 'c';
sarbaz2satr = c2[0];
sarbaz2sotoon = c2[1];
sarbaz2mojood = true;
}
else if (khodi[j] == 'k') {
sarbaz1nam = 'd';
sarbaz1satr = d1[0];
sarbaz1sotoon = d1[1];
sarbaz1mojood = true;
}
else if (khodi[j] == 'l')
{
sarbaz2nam = 'd';
sarbaz2satr = d2[0];
sarbaz2sotoon = d2[1];
sarbaz2mojood = true;
}
else if (khodi[j] == 'e')
{
asbnam = 'e';
asbsatr = e[0];
asbsotoon = e[1];
asbmojood = true;
}
else if (khodi[j] == 'f')
{
asbnam = 'f';
asbsatr = f[0];
asbsotoon = f[1];
asbmojood = true;
}
else if (khodi[j] == 'a')
{
vazirnammm = 'a';
vazirsatr = a[0];
vazirsotoon = a[1];
vazirmojood = true;
}
else if (khodi[j] == 'b') {
vazirnammm = 'b';
vazirsatr = b[0];
vazirsotoon = b[1];
vazirmojood = true;
}
}
/*
for (int bb = 0; bb <khodicount; bb++)
cout << khodi[bb];
cout << khodicount;
cin >> khodi;
moshkel ine ke 2ta vazir mindaze
*/
bool easyallow = true;
bool yekharekat = false;//motmaein shim easya yek harekat mizann
sarbaz1 = false;//mabnaro gozashtim hich kodoom nistn
sarbaz2 = false;
asb = false;
vazir = false;
bool canescapefromsarbaz1 = false, canescapefromsarbaz2 = false, canescapefromasb = false, canescapefromvazir = false;
int satrasbjadid, sotoonasbjadid;
int satrsarbazjadid, sotoonsarbazjadid;
bool vazirgo = false;
bool yekharekatmojazzarb = true;
bool edamebadekhatar = true;
int vz_t = 1;//gozahstm ta jolo erroro begiram
/*if (vazirmojood == true) {
//اينو گذاشتم تا همون اول بازي ببينه وزيرجاي خطرناکي هست يا نه اگه بود سريعا با يه حرکت ساده جاش عوض شه
int meghdarharekati = 0;
int khatarvazir;
int vazirnewsatr = 0, vazirnewsotoon = 0;
//1-bala 2-paein 3-chap 4-rast 5-bala rast 6-balachap 7-paein chap 8-paeinrast
bool vazir_easyy;
int jahatvazir = 1;
if (sarbaz1harif)
cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, vazirsatr, vazirsotoon);
if (sarbaz2harif)
cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, vazirsatr, vazirsotoon);
if (asbharif)
cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, vazirsatr, vazirsotoon);
if (vazirharif)
cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, vazirsatr, vazirsotoon);
if (cangofromsarbaz1 == false || cangofromsarbaz2 == false || cangofromasb == false || cangofromvazir == false) {
for (int jahatvazir2 = 0; jahatvazir2 < 8; jahatvazir2++) {
vazir_easyy = vazir_easy(&jahatvazir, vazirsatr, vazirsotoon, vazirnammm, map, khodi, &vazirnewsatr, &vazirnewsotoon, true);
//bool vazir_easy(int satr, int sotoon, char sarnam, char map[6][6], char* khodi, int* khatar, int* meghdarharekati = 0, bool khataryab = false)
//بيايم بگيم يه جهت ساده تو قسمت ايزي الو تعريف کنيم
//بعد بعد چک کردن 4 کن گو و ايف اصلي بگيم اگه ايف نقض شد
//تو السش اول جهت يکي اضافه بشه بعد دوباره وزير فور ايزي اجرا ببشه
//تا زماني ک ايف اصليمون (4تا شرطه)ترو بشه
//براي بقيه مهرهام همينکارو بکن
cout << "\nvazirNew" << jahatvazir;
if (sarbaz1harif)
cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, vazirnewsatr, vazirnewsotoon);
if (sarbaz2harif)
cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, vazirnewsatr, vazirnewsotoon);
if (asbharif)
cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, vazirnewsatr, vazirnewsotoon);
if (vazirharif)
cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, vazirnewsatr, vazirnewsotoon);
// cout << cangofromasb;//5 mide
//cin >> khatar;
if (vazir_easyy == true && cangofromsarbaz1 == true && cangofromsarbaz2 == true && cangofromasb == true && cangofromvazir == true) {
vazirforeasy = vazir_easy(&jahatvazir, vazirsatr, vazirsotoon, vazirnammm, map, khodi, &vazirnewsatr, &vazirnewsotoon, false);
vazirgo = true;
break;
}
else {
//if (jahatvazir == 8)
//vazirforeasy = false;
jahatvazir++;
// vazirforeasy = false;
}
}//forjahatvazir
}
}
*/
//if (vazirgo == false) {
if (!sarbaz1harif)
canescapefromsarbaz1 = true;
if (!sarbaz2harif)
canescapefromsarbaz2 = true;
if (!asbharif)
canescapefromasb = true;
if (!vazirharif)
canescapefromvazir = true;
/////////////////////////قبل از حرکت ضربي از امنيت وزير و اسب بايد مطمئن شي
//اول باید بدونیم محافظت اسب و سرباز برای وزیر بی معنیه
bool sarbazz_can_move = false;
if (easyallow == true && vazirmojood == true) {
//همون اول چک کن اگه وزیر بجای فرار میتونه مهره ای روامن بزنه مهره بزنه
bool harekatzarbidare = false;
bool can_zarb_vazir = mohafez_darad(setplayer, 2, vazirsatr, vazirsotoon, vazirharifsatr, vazirharifsotoon, map);
if (can_zarb_vazir == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(vazirharifsatr, vazirharifsotoon, setplayer, 2, vazirsatr, vazirsotoon, map, copyofmap1, vazirnammm);
bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, vazirharifsatr, vazirharifsotoon, copyofmap1, asbnam);
bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, vazirharifsatr, vazirharifsotoon, copyofmap1, asbnam);
bool _cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon);
if (_cangofromsarbaz1 == true && _cangofromsarbaz2 == true && _cangofromasb == true)
{
harekatzarbidare = true;
}
}
////////////
////
bool can_zarb_asb = mohafez_darad(setplayer, 2, vazirsatr, vazirsotoon, asbharifsatr, asbharifsotoon, map);
if (can_zarb_asb == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(asbharifsatr, asbharifsotoon, setplayer, 2, vazirsatr, vazirsotoon, map, copyofmap1, vazirnammm);
bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, vazirnammm);
bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, vazirnammm);
bool _cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, vazirnammm);
if (_cangofromsarbaz1 == true && _cangofromsarbaz2 == true && _cangofromvazir == true)
{
harekatzarbidare = true;
}
}
///////////////////
bool can_zarb_sarbaz1 = mohafez_darad(setplayer, 2, vazirsatr, vazirsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, map);
if (can_zarb_sarbaz1 == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(sarbaz1harifsatr, sarbaz1harifsotoon, setplayer, 2, vazirsatr, vazirsotoon, map, copyofmap1, asbnam);
// bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, asbnam);
bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, copyofmap1, asbnam);
bool _cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon);
bool _cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, copyofmap1, asbnam);
if (_cangofromvazir == true && _cangofromsarbaz2 == true && _cangofromasb == true)
{
harekatzarbidare = true;
}
}
////////////////////////
bool can_zarb_sarbaz2 = mohafez_darad(setplayer, 2, vazirsatr, vazirsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, map);
if (can_zarb_sarbaz2 == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(sarbaz2harifsatr, sarbaz2harifsotoon, setplayer, 2, vazirsatr, vazirsotoon, map, copyofmap1, asbnam);
bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, copyofmap1, asbnam);
// bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, copyofmap1, asbnam);
bool _cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon);
bool _cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, copyofmap1, asbnam);
if (_cangofromvazir == true && _cangofromsarbaz1 == true && _cangofromasb == true)
{
harekatzarbidare = true;
}
}
////////////////////
//حالا یکاری میکنیم ک اگه اسب درخطر بود و میتونه با امنیت مهره ای رو بزنه دیگه فرارش کار نکنه و ضربی عمل کنه
///
if (harekatzarbidare == false) {
///////////////////////////////////////////////////////////////
bool vz_mohafez_s1 = false, vz_mohafez_s2 = false, vz_mohafez_asb = false;
int countvazirzarbpazir = 0;
int tedadmohafezvazir = 0;
//اينو گذاشتم تا همون اول بازي ببينه وزيرجاي خطرناکي هست يا نه اگه بود سريعا با يه حرکت ساده جاش عوض شه
int meghdarharekati = 0;
// int khatarvazir;
int vazirnewsatr = 0, vazirnewsotoon = 0;
//1-bala 2-paein 3-chap 4-rast 5-bala rast 6-balachap 7-paein chap 8-paeinrast
bool vazir_easyy;
int jahatvazir = 1;
if (sarbaz1harif)
cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, vazirsatr, vazirsotoon, map, vazirnammm);
if (sarbaz2harif)
cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, vazirsatr, vazirsotoon, map, vazirnammm);
if (asbharif)
cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, vazirsatr, vazirsotoon);
if (vazirharif)
cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, vazirsatr, vazirsotoon, map, vazirnammm);
if (cangofromsarbaz1 == false || cangofromsarbaz2 == false || cangofromasb == false || cangofromvazir == false) {//cangofromvazir == false hazf shod ta beshe vaziro ba harchi zad hata vazir ba vazir
bool vaziravvalmohafezdarad = false;//ino gozashtm ta hamoonavvalcheckkone ke agevazirmohafezdashtaslan harekatesh nade
if (sarbaz1mojood)
{
bool mohafezsarbaz1 = mohafez_darad(setplayer, 1, sarbaz1satr, sarbaz1sotoon, vazirsatr, vazirsotoon, map);
if (mohafezsarbaz1)
vaziravvalmohafezdarad = true;
}//if sarbaz1mojood
if (sarbaz2mojood)
{
bool mohafezsarbaz2 = mohafez_darad(setplayer, 1, sarbaz2satr, sarbaz2sotoon, vazirsatr, vazirsotoon, map);
if (mohafezsarbaz2)
vaziravvalmohafezdarad = true;
}
if (asbmojood)
{
bool mohafezasb = mohafez_darad(setplayer, 2, asbsatr, asbsotoon, vazirsatr, vazirsotoon, map);
if (mohafezasb)
vaziravvalmohafezdarad = true;
}
if (cangofromsarbaz1 == false || cangofromsarbaz2 == false || cangofromasb == false)
vaziravvalmohafezdarad = false;
//بگیم اگه حریف اسب بود یا سرباز ک بخواد وزیرو بزنه دیگه محافظت سرباز واسب بیخوده
if (vaziravvalmohafezdarad == false) {//vaziragehichmohafezinadashtharekatkone
int jahathayeamn[8] = { 0 };
int shomareshamn = 0;
for (int jahatvazir2 = 0; jahatvazir2 < 8; jahatvazir2++) {
//bool vazir_easy(char setplayer, int *jahat, int satr, int sotoon, char sarnam, bool sarbaz1harif, bool sarbaz2harif, bool asbharif, bool vazirharif, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, char map[6][6], char* khodi, int* vazirnewsatr, int* vazirnewsotoon, int khodicount, bool khataryab, bool)
vazir_easyy = vazir_easy(&vz_t, setplayer, &jahatvazir, vazirsatr, vazirsotoon, vazirnammm, sarbaz1harif, sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon, map, khodi, &vazirnewsatr, &vazirnewsotoon, khodicount, true);
if (vazir_easyy == true)
{
// cout << endl << " jahat" << jahatvazir << jahatvazir2;
if (sarbaz1mojood) {//چک میکنیم ک دراین جهت آیا وزیرمیتونه محافظ سرباز یک بشه یانه
vz_mohafez_s1 = mohafez_darad(setplayer, 3, vazirnewsatr, vazirnewsotoon, sarbaz1satr, sarbaz2satr, map);
}
if (sarbaz2mojood)
{
vz_mohafez_s2 = mohafez_darad(setplayer, 3, vazirnewsatr, vazirnewsotoon, sarbaz2satr, sarbaz2sotoon, map);
}
if (asbmojood)
{
vz_mohafez_asb = mohafez_darad(setplayer, 3, vazirnewsatr, vazirnewsotoon, asbsatr, asbsotoon, map);
}
if (vz_mohafez_asb == false && vz_mohafez_s1 == false && vz_mohafez_s2 == false)
{
jahathayeamn[shomareshamn] = jahatvazir;
shomareshamn++;
jahatvazir++;
continue;
}
if (vz_mohafez_asb == true)
{
// cout << "moasb";
break;
}
if (vz_mohafez_s1 == true || vz_mohafez_s2 == true)
{
// cout << "mo";
break;
}
}
//bool vazir_easy(int satr, int sotoon, char sarnam, char map[6][6], char* khodi, int* khatar, int* meghdarharekati = 0, bool khataryab = false)
//بيايم بگيم يه جهت ساده تو قسمت ايزي الو تعريف کنيم
//بعد بعد چک کردن 4 کن گو و ايف اصلي بگيم اگه ايف نقض شد
//تو السش اول جهت يکي اضافه بشه بعد دوباره وزير فور ايزي اجرا ببشه
//تا زماني ک ايف اصليمون (4تا شرطه)ترو بشه
//براي بقيه مهرهام همينکارو بکن
// cin >> yekharekat;
//بیا چک کن وزیر تو جهت جدید محافظ مهره ای میشه یا نه اگه اره خب همون بزن اگه نه جهت امنو تو یه ارایه ذخیره کن و بعدا ازش استفاده کن
if (sarbaz1harif)
cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, vazirnewsatr, vazirnewsotoon, map, vazirnammm);
if (cangofromsarbaz1 == false)
countvazirzarbpazir += 1;
if (sarbaz2harif)
cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, vazirnewsatr, vazirnewsotoon, map, vazirnammm);
if (cangofromsarbaz2 == false)
countvazirzarbpazir += 1;
if (asbharif)
cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, vazirnewsatr, vazirnewsotoon);
if (cangofromasb == false)
countvazirzarbpazir += 1;
if (vazirharif)
cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, vazirnewsatr, vazirnewsotoon, map, vazirnammm);
if (cangofromvazir == false)
countvazirzarbpazir += 1;
// cout << jahatvazir<<endl;//5 mide
//cin >> yekharekat;
if (vazir_easyy == true && cangofromvazir == false || cangofromsarbaz1 == false || cangofromsarbaz2 == false || cangofromasb == false)
{
bool vazirmohafezdarad = false;
if (sarbaz1mojood)
{
bool mohafezsarbaz1 = mohafez_darad(setplayer, 1, sarbaz1satr, sarbaz1sotoon, vazirnewsatr, vazirnewsotoon, map);
if (mohafezsarbaz1 == true) {
bool mohafezghabelzadane = mohafez_ghabelzadane(sarbaz1nam, vazirsatr, vazirsotoon, setplayer, sarbaz1satr, sarbaz1sotoon, vazirnewsatr, vazirnewsotoon, map, sarbaz1harif,
sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon
, vazirharifsatr, vazirharifsotoon);
if (mohafezghabelzadane == false) {
vazirmohafezdarad = true;
tedadmohafezvazir += 1;
}
}
}//if sarbaz1mojood
if (sarbaz2mojood)
{
bool mohafezsarbaz2 = mohafez_darad(setplayer, 1, sarbaz2satr, sarbaz2sotoon, vazirnewsatr, vazirnewsotoon, map);
if (mohafezsarbaz2 == true) {
bool mohafezghabelzadane = mohafez_ghabelzadane(sarbaz2nam, vazirsatr, vazirsotoon, setplayer, sarbaz2satr, sarbaz2sotoon, vazirnewsatr, vazirnewsotoon, map, sarbaz1harif,
sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon
, vazirharifsatr, vazirharifsotoon);
if (mohafezghabelzadane == false) {
vazirmohafezdarad = true;
tedadmohafezvazir += 1;
}
}
}
if (asbmojood)
{
bool mohafezasb = mohafez_darad(setplayer, 2, asbsatr, asbsotoon, vazirnewsatr, vazirnewsotoon, map);
if (mohafezasb == true) {
bool mohafezghabelzadane = mohafez_ghabelzadane(asbnam, vazirsatr, vazirsotoon, setplayer, asbsatr, asbsotoon, vazirnewsatr, vazirnewsotoon, map, sarbaz1harif,
sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon
, vazirharifsatr, vazirharifsotoon);
if (mohafezghabelzadane == false) {
vazirmohafezdarad = true;
tedadmohafezvazir += 1;
}
}
}
if (vazirmohafezdarad == true && tedadmohafezvazir >= countvazirzarbpazir)
{
vazirforeasy = vazir_easy(&vz_t, setplayer, &jahatvazir, vazirsatr, vazirsotoon, vazirnammm, sarbaz1harif, sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon, map, khodi, &vazirnewsatr, &vazirnewsotoon, khodicount, false);
easyallow = false;
yekharekat = true;
edamebadekhatar = false;
break;
}
}
if (vazir_easyy == true && cangofromsarbaz1 == true && cangofromsarbaz2 == true && cangofromasb == true && cangofromvazir == true) {
// bool vazir_easy(char setplayer, int *jahat, int satr, int sotoon, char sarnam, bool sarbaz1harif, bool sarbaz2harif, bool asbharif, bool vazirharif, int sarbaz1harifsatr, int sarbaz1harifsotoon, int sarbaz2harifsatr, int sarbaz2harifsotoon, int asbharifsatr, int asbharifsotoon, int vazirharifsatr, int vazirharifsotoon, char map[6][6], char* khodi, int* vazirnewsatr, int* vazirnewsotoon, bool khataryab)
vazirforeasy = vazir_easy(&vz_t, setplayer, &jahatvazir, vazirsatr, vazirsotoon, vazirnammm, sarbaz1harif, sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon, map, khodi, &vazirnewsatr, &vazirnewsotoon, khodicount, false);
easyallow = false;
yekharekat = true;
edamebadekhatar = false;
break;
}
else {
//if (jahatvazir == 8)
//vazirforeasy = false;
jahatvazir++;
// vazirforeasy = false;
}
}//forjahatvazir
}
}
//hala check mikonim ke aya vazir amn hast ya na
}//ifvazirmojood
////////////////////////////
}
///////////////////////////////////////اومدیم گفتیم قبل از فرار اسب با وزیر ازش محافظت کن
if (easyallow == true && yekharekat == false) {
bool harekatzarbidare = false;
bool can_zarb_vazir = mohafez_darad(setplayer, 2, asbsatr, asbsotoon, vazirharifsatr, vazirharifsotoon, map);
if (can_zarb_vazir == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(vazirharifsatr, vazirharifsotoon, setplayer, 2, asbsatr, asbsotoon, map, copyofmap1, asbnam);
bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, vazirharifsatr, vazirharifsotoon, copyofmap1, asbnam);
bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, vazirharifsatr, vazirharifsotoon, copyofmap1, asbnam);
bool _cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon);
if (_cangofromsarbaz1 == true && _cangofromsarbaz2 == true && _cangofromasb == true)
{
harekatzarbidare = true;
}
}
////////////
////
bool can_zarb_asb = mohafez_darad(setplayer, 2, asbsatr, asbsotoon, asbharifsatr, asbharifsotoon, map);
if (can_zarb_asb == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(asbharifsatr, asbharifsotoon, setplayer, 2, asbsatr, asbsotoon, map, copyofmap1, asbnam);
bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, asbnam);
bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, asbnam);
bool _cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, asbnam);
if (_cangofromsarbaz1 == true && _cangofromsarbaz2 == true && _cangofromvazir == true)
{
harekatzarbidare = true;
}
}
///////////////////
bool can_zarb_sarbaz1 = mohafez_darad(setplayer, 2, asbsatr, asbsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, map);
if (can_zarb_sarbaz1 == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(sarbaz1harifsatr, sarbaz1harifsotoon, setplayer, 2, asbsatr, asbsotoon, map, copyofmap1, asbnam);
// bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, asbharifsatr, asbharifsotoon, copyofmap1, asbnam);
bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, copyofmap1, asbnam);
bool _cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon);
bool _cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, copyofmap1, asbnam);
if (_cangofromvazir == true && _cangofromsarbaz2 == true && _cangofromasb == true)
{
harekatzarbidare = true;
}
}
////////////////////////
bool can_zarb_sarbaz2 = mohafez_darad(setplayer, 2, asbsatr, asbsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, map);
if (can_zarb_sarbaz2 == true)
{
char copyofmap1[6][6];//araye ba ravesh erja mire hamin tabe paeino ejra koni khode tabe poresh mikone
aya_zadan_ghable_farar_amn_ast(sarbaz2harifsatr, sarbaz2harifsotoon, setplayer, 2, asbsatr, asbsotoon, map, copyofmap1, asbnam);
bool _cangofromsarbaz1 = checkzarbsarbaz(setplayer, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, copyofmap1, asbnam);
// bool _cangofromsarbaz2 = checkzarbsarbaz(setplayer, sarbaz2harifsatr, sarbaz2harifsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, copyofmap1, asbnam);
bool _cangofromasb = checkzarbasb(asbharifsatr, asbharifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon);
bool _cangofromvazir = checkzarbvazir(vazirharifsatr, vazirharifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, copyofmap1, asbnam);
if (_cangofromvazir == true && _cangofromsarbaz1 == true && _cangofromasb == true)
{
harekatzarbidare = true;
}
}
////////////////////
//حالا یکاری میکنیم ک اگه اسب درخطر بود و میتونه با امنیت مهره ای رو بزنه دیگه فرارش کار نکنه و ضربی عمل کنه
///
if (harekatzarbidare == false) {
bool sarbaz1mohafezeshe = false, sarbaz2mohafezeshe = false, vazirmohafezeshe = false, asbmohafezeshe = false;
bool asbdarkhatar = false, sarbaz1darkhatar = false, sarbaz2darkhatar = false, vazirdarkhatar = false;//doroste ghesmati braye farar mohreha dashtim ama darsoorti ke harekat sade amn nadashte bashn mian inja ta vazir mohafezeshun she
int jahatmohreasb = 0, jahatmohresarbaz1 = 0, jahatmohresarbaz2 = 0;
int jahathayemojaz[8] = { 0 };
int shomarande = 0;
int meghdarharekatsarbaz1[6] = { 0 }, meghdarharekatsarbaz2[6] = { 0 }, meghdarharekatasb[6] = { 0 }, meghdarharekatvazir[6] = { 0 };
search_mohre_darkhatar(setplayer, sarbaz1mojood, sarbaz2mojood, asbmojood, vazirmojood, sarbaz1harif, sarbaz2harif, asbharif, vazirharif, asbsatr, asbsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon, sarbaz1satr, sarbaz1sotoon, sarbaz2sotoon, sarbaz1nam, sarbaz2satr, sarbaz2nam, vazirsatr, vazirsotoon, asbnam, vazirnammm, &sarbaz1darkhatar, &sarbaz2darkhatar, &asbdarkhatar, &vazirdarkhatar);
if (asbdarkhatar == true && yekharekat == false)
{
sarbaz1mohafezeshe = false, sarbaz2mohafezeshe = false, vazirmohafezeshe = false, asbmohafezeshe = false;
// asbdarkhatar = false, sarbaz1darkhatar = false, sarbaz2darkhatar = false, vazirdarkhatar = false;//doroste ghesmati braye farar mohreha dashtim ama darsoorti ke harekat sade amn nadashte bashn mian inja ta vazir mohafezeshun she
//int jahatmohreasb, jahatmohresarbaz1, jahatmohresarbaz2;
//int jahathayemojaz[6] = { 0 };
//int shomarande = 0;
//int meghdarharekatsarbaz1[6] = { 0 }, meghdarharekatsarbaz2[6] = { 0 }, meghdarharekatasb[6] = { 0 }, meghdarharekatvazir[6] = { 0 };
search_mohre_darkhatar(setplayer, sarbaz1mojood, sarbaz2mojood, asbmojood, vazirmojood, sarbaz1harif, sarbaz2harif, asbharif, vazirharif, asbsatr, asbsotoon, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon, sarbaz1satr, sarbaz1sotoon, sarbaz2sotoon, sarbaz1nam, sarbaz2satr, sarbaz2nam, vazirsatr, vazirsotoon, asbnam, vazirnammm, &sarbaz1darkhatar, &sarbaz2darkhatar, &asbdarkhatar, &vazirdarkhatar);
if (sarbaz1mojood)
sarbaz1mohafezeshe = mohafez_darad(setplayer, 1, sarbaz1satr, sarbaz1sotoon, asbsatr, asbsotoon, map);
if (sarbaz2mojood)
sarbaz2mohafezeshe = mohafez_darad(setplayer, 1, sarbaz2satr, sarbaz2sotoon, asbsatr, asbsotoon, map);
if (vazirmojood)
vazirmohafezeshe = mohafez_darad(setplayer, 3, vazirsatr, vazirsotoon, asbsatr, asbsotoon, map);
if ((sarbaz1mohafezeshe == true && sarbaz2mohafezeshe == false && vazirmohafezeshe == false) || (sarbaz2mohafezeshe == true && sarbaz1mohafezeshe == false && vazirmohafezeshe == false) || (vazirmohafezeshe == true && sarbaz1mohafezeshe == false && sarbaz2mohafezeshe == false) || (sarbaz1mohafezeshe == false && sarbaz2mohafezeshe == false && vazirmohafezeshe == false)) {
shomarande = 0;
mohre_kojaye_vazire(&jahatmohreasb, asbsatr, asbsotoon, vazirsatr, vazirsotoon, map);
vazir_easy_easy(&jahatmohreasb, vazirsatr, vazirsotoon, jahathayemojaz, meghdarharekatasb, khodicount, khodi, asbsatr, asbsotoon, asbnam);
bool vazir_easy_go = false;
//int countchandtameghdarsefre = 0, meghdarharekatasbok = 0;
/////shomaresh tedad anasor jahathaye mojaz
for (shomarande = 0; shomarande < sizeof jahathayemojaz / sizeof(int); shomarande++) {
// cout << "\nshomarande:" << shomarande << endl;
if (meghdarharekatasb[shomarande] == 0)
continue;
// bool vazir_easy_for_khatar(int jahat, int vazirsatr, int vazirsotoon, char sarnam, int meghdarharekat, char setplayer, int sarbaz1mojood, int sarbaz2mojood, int asbmojood, int sarbaz1satr, int sarbaz1sotoon, int sarbaz2satr, int sarbaz2sotoon, int asbsatr, int asbsotoon)
/*if (meghdarharekatasb[shomarande] == 0) {
countchandtameghdarsefre += 1;
if (countchandtameghdarsefre > 4)
meghdarharekatasbok = 1;
else
continue;
}
*/
/////////////////////////part3
//aya_zadan_ghable_farar_amn_ast(harifsatr, int harifsotoon, char setplayer, int mohafezchist, int satrmohrekhodi, int sotoonmohrekhodi, char map[6][6], char copyofmap1[6][6], char nammohre)
vazir_easy_go = vazir_easy_for_khatar(asbsatr, asbsotoon, khodi, jahathayemojaz[shomarande], vazirsatr, vazirsotoon, vazirnammm, meghdarharekatasb[shomarande], setplayer, sarbaz1mojood, sarbaz2mojood, asbmojood, sarbaz1satr, sarbaz1sotoon, sarbaz2satr, sarbaz2sotoon, asbsatr, asbsotoon, sarbaz1harif, sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon, sarbaz1nam, sarbaz2nam, asbnam);
if (vazir_easy_go == true)
{
edamebadekhatar = false;
yekharekat = true;
easyallow = false;
break;
}
}
/*if (countchandtameghdarsefre > 4) {
for (shomarande = 0; jahathayemojaz[shomarande] > 0; shomarande++)
{
vazir_easy_go = vazir_easy_for_khatar(khodi, jahathayemojaz[shomarande], vazirsatr, vazirsotoon, vazirnammm, meghdarharekatasbok, setplayer, sarbaz1mojood, sarbaz2mojood, asbmojood, sarbaz1satr, sarbaz1sotoon, sarbaz2satr, sarbaz2sotoon, asbsatr, asbsotoon, sarbaz1harif, sarbaz2harif, asbharif, vazirharif, sarbaz1harifsatr, sarbaz1harifsotoon, sarbaz2harifsatr, sarbaz2harifsotoon, asbharifsatr, asbharifsotoon, vazirharifsatr, vazirharifsotoon, sarbaz1nam, sarbaz2nam, asbnam);
if (vazir_easy_go)
{
yekharekat = true;
break;
}
else
continue;
}
//}*/
////////////part2
}
}
}
}
////////////////////////////////////////////////////////////
////////////////////////////////
//////////////////zarb vazir//////////////////////
if (easyallow = true && yekharekat == false) {
if (setplayer == '1')
{
if (sarbaz1satr >= 0 && sarbaz1sotoon >= 0 && sarbaz1mojood == true) {
satrsarbazjadid = 0;
sotoonsarbazjadid = 0;
bool sarbaz1_trial = zarbsarbaz2(sarbaz1satr, sarbaz1sotoon, sarbaz1nam, costn[0], map, khodi, &satrsarbazjadid, &sotoonsarbazjadid, true);
sarbaz1 = zarbsarbaz2(sarbaz1satr, sarbaz1sotoon, sarbaz1nam, costn[0], map, khodi, 0, 0, false);
}
if (sarbaz1) {
// cout << "sarbaz1barghararast";
easyallow = false;
yekharekat = true;
}
if (!sarbaz1&&sarbaz2mojood == true) {
if (sarbaz2satr <= 5 && sarbaz2sotoon <= 5) {
satrsarbazjadid = 0;
sotoonsarbazjadid = 0;
bool sarbaz2_trial = zarbsarbaz2(sarbaz2satr, sarbaz2sotoon, sarbaz2nam, costn[0], map, khodi, &satrsarbazjadid, &sotoonsarbazjadid, true);
sarbaz2 = zarbsarbaz2(sarbaz2satr, sarbaz2sotoon, sarbaz2nam, costn[0], map, khodi, 0, 0, false);
}
}
if (sarbaz2) {
// cout << "sarbaz2 barghararast";
// cout << sarbaz2satr;
easyallow = false;
yekharekat = true;
}
}
else
{
if (sarbaz1satr >= 0 && sarbaz1sotoon >= 0 && sarbaz1mojood == true) {
satrsarbazjadid = 0;
sotoonsarbazjadid = 0;
bool sarbaz1_trial = zarbsarbaz(sarbaz1satr, sarbaz1sotoon, sarbaz1nam, costn[0], map, khodi, &satrsarbazjadid, &sotoonsarbazjadid, true);
sarbaz1 = zarbsarbaz(sarbaz1satr, sarbaz1sotoon, sarbaz1nam, costn[0], map, khodi, 0, 0, false);
}
if (sarbaz1) {
// cout << "sarbaz1barghararast";
easyallow = false;
yekharekat = true;
}
if (!sarbaz1&&sarbaz2mojood == true) {
if (sarbaz2satr <= 5 && sarbaz2sotoon <= 5) {
satrsarbazjadid = 0;
sotoonsarbazjadid = 0;
bool sarbaz2_trial = zarbsarbaz(sarbaz2satr, sarbaz2sotoon, sarbaz2nam, costn[0], map, khodi, &satrsarbazjadid, &sotoonsarbazjadid, true);
sarbaz2 = zarbsarbaz(sarbaz2satr, sarbaz2sotoon, sarbaz2nam, costn[0], map, khodi, 0, 0, false);
}
}
}
if (sarbaz2) {
// cout << "sarbaz2 barghararast";
// cout << sarbaz2satr;
easyallow = false;
yekharekat = true;
}
if (!sarbaz2&&asbmojood == true) {
if (asbsatr >= 0 && asbsotoon >= 0) {
bool asb_trial = zarbasb(asbsatr, asbsotoon, asbnam, costn[0], map, khodi, &satrasbjadid, &sotoonasbjadid, true);
asb = zarbasb(asbsatr, asbsotoon, asbnam, costn[0], map, khodi, 0, 0, false);
}
}
if (asb) {
// cout << "asb";
easyallow = false;
yekharekat = true;
}
if (!asb) {
// cin >> satr;
int satrvazirjadid = -1, sotoonvazirjadid = -1;