Advertisement
Guest User

Untitled

a guest
Oct 30th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.23 KB | None | 0 0
  1. [RoomType("GameType")]
  2. public class GameCode : Game<Player>
  3. {
  4. Message m;
  5.  
  6. Player player_1;
  7. Player player_2;
  8.  
  9. Player[] arrplayer = new Player[45];
  10.  
  11. DateTime time_close; // diff zwischen datetime last und close
  12. DateTime time_last; // wann der spieler zuletzt gesetzt hat
  13.  
  14. Timer timer;
  15.  
  16. string time_send;
  17.  
  18.  
  19. string username_1 = "";
  20. string username_2 = "";
  21.  
  22. int powerup_1 = 0;
  23. int powerup_2 = 0;
  24.  
  25. int strike_1 = 0;
  26. int strike_2 = 0;
  27.  
  28. bool powerup_1_able = true;
  29. bool powerup_2_able = true;
  30.  
  31. bool turn_1;
  32. bool turn_2;
  33.  
  34. bool send_start = false;
  35. bool allow_join = true;
  36.  
  37. int[] value_col = new int[7];
  38. int[,] field = new int[7, 6];
  39.  
  40. int number = 0;
  41. string field_code = "";
  42.  
  43. public override void GameStarted()
  44. {
  45. Username();
  46.  
  47. PlayerIO.BigDB.Load("Roomdata", RoomId,
  48. delegate (DatabaseObject obj)
  49. {
  50. if (obj != null)
  51. {
  52. string db_roomname = obj.GetString("Roomname");
  53.  
  54. if(db_roomname == RoomId)
  55. {
  56. if (obj.Contains("Closetime") == true)
  57. {
  58. Console.Write("Closetime gibts NICHT");
  59. strike_1 = obj.GetInt("Strike_1");
  60. strike_2 = obj.GetInt("Strike_2");
  61. turn_1 = obj.GetBool("Turn_1");
  62. turn_2 = obj.GetBool("Turn_2");
  63.  
  64. DateTime.TryParse(obj.GetString("Closetime"), out time_close);
  65. DateTime.TryParse(obj.GetString("Lasttime"), out time_last);
  66. DateTime n = DateTime.UtcNow;
  67. if (n > time_last.AddSeconds(90))
  68. {
  69. PlayerIO.BigDB.DeleteKeys("Roomdata", RoomId);
  70. return;
  71. }
  72.  
  73. if (n >= time_last.AddSeconds(15)) // 11:00:05 11:00:10
  74. {
  75. if (turn_1 == true)
  76. {
  77. strike_1++;
  78. number = 1;
  79. }
  80. else if (turn_2 == true)
  81. {
  82. strike_2++;
  83. number = 2;
  84. }
  85. System.Random r;
  86. r = new System.Random();
  87. int v = r.Next(0, 7);
  88.  
  89. while (value_col[v] >= 6)
  90. {
  91. v = r.Next(0, 7);
  92. }
  93. field[v, value_col[v]] = number;
  94. value_col[v]++;
  95. turn_1 = !turn_1;
  96. turn_2 = !turn_2;
  97.  
  98. }
  99. else
  100. {
  101. TimeSpan p = time_last.AddSeconds(15) - DateTime.UtcNow;
  102. int min = p.Minutes * 60;
  103. int hou = p.Hours * 3600;
  104. int sec = (p.Seconds + min + hou) * 1000;
  105. Console.WriteLine(sec);
  106. DateTime Next = DateTime.UtcNow.AddSeconds(sec);
  107. time_send = Next.ToString(String.Format("MM.dd.yyyy HH:mm:ss"));
  108. Timer(sec);
  109. }
  110.  
  111. if (n >= time_last.AddSeconds(30))
  112. {
  113. if (turn_1 == true)
  114. {
  115. strike_1++;
  116. number = 1;
  117. }
  118. else if (turn_2 == true)
  119. {
  120. strike_2++;
  121. number = 2;
  122. }
  123. System.Random r;
  124. r = new System.Random();
  125. int v = r.Next(0, 7);
  126.  
  127. while (value_col[v] >= 6)
  128. {
  129. v = r.Next(0, 7);
  130. }
  131. field[v, value_col[v]] = number;
  132. value_col[v]++;
  133. turn_1 = !turn_1;
  134. turn_2 = !turn_2;
  135. }
  136. else
  137. {
  138. TimeSpan p = time_last.AddSeconds(30) - DateTime.UtcNow;
  139. int min = p.Minutes * 60;
  140. int hou = p.Hours * 3600;
  141. int sec = (p.Seconds + min + hou) * 1000;
  142. Console.WriteLine(sec);
  143. DateTime Next = DateTime.UtcNow.AddSeconds(sec);
  144. time_send = Next.ToString(String.Format("MM.dd.yyyy HH:mm:ss"));
  145. Timer(sec);
  146. }
  147. if (n >= time_last.AddSeconds(45))
  148. {
  149. if (turn_1 == true)
  150. {
  151. strike_1++;
  152. number = 1;
  153. }
  154. else if (turn_2 == true)
  155. {
  156. strike_2++;
  157. number = 2;
  158. }
  159. System.Random r;
  160. r = new System.Random();
  161. int v = r.Next(0, 7);
  162.  
  163. while (value_col[v] >= 6)
  164. {
  165. v = r.Next(0, 7);
  166. }
  167. field[v, value_col[v]] = number;
  168. value_col[v]++;
  169. turn_1 = !turn_1;
  170. turn_2 = !turn_2;
  171. }
  172. else
  173. {
  174. TimeSpan p = time_last.AddSeconds(45) - DateTime.UtcNow;
  175. int min = p.Minutes * 60;
  176. int hou = p.Hours * 3600;
  177. int sec = (p.Seconds + min + hou) * 1000;
  178. Console.WriteLine(sec);
  179. DateTime Next = DateTime.UtcNow.AddSeconds(sec);
  180. time_send = Next.ToString(String.Format("MM.dd.yyyy HH:mm:ss"));
  181. Timer(sec);
  182. }
  183. if (n >= time_last.AddSeconds(60))
  184. {
  185. if (turn_1 == true)
  186. {
  187. strike_1++;
  188. number = 1;
  189. }
  190. else if (turn_2 == true)
  191. {
  192. strike_2++;
  193. number = 2;
  194. }
  195. System.Random r;
  196. r = new System.Random();
  197. int v = r.Next(0, 7);
  198.  
  199. while (value_col[v] >= 6)
  200. {
  201. v = r.Next(0, 7);
  202. }
  203. field[v, value_col[v]] = number;
  204. value_col[v]++;
  205. turn_1 = !turn_1;
  206. turn_2 = !turn_2;
  207. }
  208. else
  209. {
  210. TimeSpan p = time_last.AddSeconds(60) - DateTime.UtcNow;
  211. int min = p.Minutes * 60;
  212. int hou = p.Hours * 3600;
  213. int sec = (p.Seconds + min + hou) * 1000;
  214. Console.WriteLine(sec);
  215. DateTime Next = DateTime.UtcNow.AddSeconds(sec);
  216. time_send = Next.ToString(String.Format("MM.dd.yyyy HH:mm:ss"));
  217. Timer(sec);
  218. }
  219. if (n >= time_last.AddSeconds(75))
  220. {
  221. if (turn_1 == true)
  222. {
  223. strike_1++;
  224. number = 1;
  225. }
  226. else if (turn_2 == true)
  227. {
  228. strike_2++;
  229. number = 2;
  230. }
  231. System.Random r;
  232. r = new System.Random();
  233. int v = r.Next(0, 7);
  234.  
  235. while (value_col[v] >= 6)
  236. {
  237. v = r.Next(0, 7);
  238. }
  239. field[v, value_col[v]] = number;
  240. value_col[v]++;
  241. turn_1 = !turn_1;
  242. turn_2 = !turn_2;
  243. }
  244. else
  245. {
  246. TimeSpan p = time_last.AddSeconds(75) - DateTime.UtcNow;
  247. int min = p.Minutes * 60;
  248. int hou = p.Hours * 3600;
  249. int sec = (p.Seconds + min + hou) * 1000;
  250. Console.WriteLine(sec);
  251. DateTime Next = DateTime.UtcNow.AddSeconds(sec);
  252. time_send = Next.ToString(String.Format("MM.dd.yyyy HH:mm:ss"));
  253. Timer(sec);
  254. }
  255.  
  256. if (strike_1 >= 3 && strike_2 < 3)
  257. {
  258. // 2 gewinnt
  259. }
  260. else if (strike_2 >= 3 && strike_1 < 3)
  261. {
  262. // 1 gewinnt
  263. }
  264. else if (strike_1 >= 3 && strike_2 >= 3)
  265. {
  266. // keiner bekommt was
  267. }
  268. else
  269. {
  270. // es geht weiter
  271. }
  272. Writer();
  273. field_code = obj.GetString("Fieldcode");
  274. send_start = true;
  275. Join();
  276. }
  277. else
  278. {
  279.  
  280. DateTime temp = DateTime.UtcNow.AddSeconds(10);
  281. time_send = temp.ToString(String.Format("MM.dd.yyyy HH:mm:ss"));
  282. timer = AddTimer(
  283. delegate ()
  284. {
  285. time_send = DateTime.UtcNow.AddSeconds(10).ToString(String.Format("MM.dd.yyyy HH:mm:ss"));
  286. Broadcast("StartGame", turn_1 = true, turn_2 = false, time_send);
  287. timer.Stop();
  288. timer = null;
  289. Timer(15000);
  290. },
  291. 10000);
  292. send_start = true;
  293. Join();
  294. }
  295. }
  296. }
  297. else
  298. {
  299. //kick all
  300. }
  301. });
  302. }
  303.  
  304. public void Join()
  305. {
  306. Console.WriteLine("Join()");
  307. if (send_start == true)
  308. {
  309. Console.WriteLine("Join() == true");
  310. for (int i = 0; i < arrplayer.Length; i++)
  311. {
  312. if (arrplayer[i] != null)
  313. {
  314. Console.WriteLine(username_1);
  315. Console.WriteLine(username_2);
  316. if (arrplayer[i].username == username_1)
  317. {
  318. player_1 = arrplayer[i];
  319. if (time_send != "")
  320. {
  321. Console.WriteLine("1");
  322. m = Message.Create("JoinedGame", 1, time_send);
  323. arrplayer[i].Send(m);
  324. }
  325. }
  326. else if (arrplayer[i].username == username_2)
  327. {
  328. player_2 = arrplayer[i];
  329.  
  330. if (time_send != "")
  331. {
  332. Console.WriteLine("2");
  333. m = Message.Create("JoinedGame", 2, time_send);
  334. arrplayer[i].Send(m);
  335. }
  336. }
  337. else
  338. {
  339. // spectator
  340. }
  341. }
  342. else
  343. {
  344. // kick
  345. }
  346. }
  347. }
  348. }
  349.  
  350.  
  351. public override void GameClosed()
  352. {
  353. timer.Stop();
  354. Writer();
  355. PlayerIO.BigDB.Load("Roomdata", RoomId,
  356. delegate (DatabaseObject obj)
  357. {
  358. obj.Set("Fieldcode", field_code);
  359. obj.Set("Closetime", DateTime.UtcNow.ToString(String.Format("MM.dd.yyyy HH:mm:ss")));
  360. obj.Set("Turn_1", turn_1);
  361. obj.Set("Turn_2", turn_2);
  362. obj.Set("Powerup_1_able", powerup_1_able);
  363. obj.Set("Powerup_2_able", powerup_2_able);
  364. obj.Set("Strike_1", strike_1);
  365. obj.Set("Strike_2", strike_2);
  366. obj.Set("Lasttime", time_last);
  367. obj.Save();
  368. });
  369. }
  370.  
  371. void Username()
  372. {
  373. int s = RoomId.IndexOf("-") + 1;
  374. int e = RoomId.LastIndexOf("_");
  375. int l = e - s;
  376. username_1 = RoomId.Substring(s, l);
  377.  
  378. s = RoomId.LastIndexOf("_") + 1;
  379. e = RoomId.LastIndexOf("-");
  380. l = e - s;
  381. username_2 = RoomId.Substring(s, l);
  382. }
  383.  
  384. void Keys(Player player)
  385. {
  386. foreach (string Key in player.JoinData.Keys)
  387. {
  388. string value = player.JoinData[Key];
  389. if (Key == "Username")
  390. {
  391. player.username = value;
  392. }
  393. if (Key == "Password")
  394. {
  395. player.password = value;
  396. }
  397. }
  398. }
  399.  
  400. public override void UserJoined(Player player)
  401. {
  402. Username();
  403. Keys(player);
  404.  
  405. PlayerIO.BigDB.Load("PlayerObjects", player.username,
  406. delegate (DatabaseObject obj)
  407. {
  408. if (obj != null)
  409. {
  410. string db_username = obj.GetString("Username");
  411. string db_password = obj.GetString("Password");
  412. string db_roomname = obj.GetString("Roomname");
  413. int db_powerup = obj.GetInt("Powerup");
  414.  
  415. if (db_roomname == RoomId)
  416. {
  417. if (db_username == player.username && db_password == player.password)
  418. {
  419. for (int i = 0; i < arrplayer.Length; i++)
  420. {
  421. if (arrplayer[i] == null)
  422. {
  423. arrplayer[i] = player;
  424. break; // methode geht weiter
  425. }
  426. }
  427. }
  428. }
  429. else
  430. {
  431.  
  432. }
  433. }
  434. else
  435. {
  436. //kick
  437. }
  438. });
  439. }
  440.  
  441. public override void GotMessage(Player player, Message message)
  442. {
  443. switch (message.Type)
  444. {
  445. //case "ScriptIsLoaded":
  446. // m = Message.Create("ScrDone", turn_1, turn_2);
  447. // player.Send(m);
  448. // break;
  449. }
  450.  
  451. if (player == player_1 && turn_1 == true || player == player_2 && turn_2 == true)
  452. {
  453. if (turn_1 == true)
  454. {
  455. number = 1;
  456. }
  457. else if (turn_2 == true)
  458. {
  459. number = 2;
  460. }
  461. for (int x = 0; x < 7; x++)
  462. {
  463. if (message.Type == x.ToString())
  464. {
  465. if (value_col[x] < 6)
  466. {
  467. field[x, value_col[x]] = number;
  468. value_col[x]++;
  469. turn_1 = !turn_1;
  470. turn_2 = !turn_2;
  471. Writer();
  472. Broadcast("uTurn", turn_1, turn_2, field_code, DateTime.UtcNow.AddSeconds(15).ToString(String.Format("MM.dd.yyyy HH:mm:ss")));
  473. timer.Stop();
  474. timer = null;
  475. Timer(15000);
  476. Inspector();
  477. time_last = DateTime.UtcNow;
  478. }
  479. else
  480. {
  481. // voll
  482. }
  483. }
  484. }
  485. }
  486. else
  487. {
  488. // spectator
  489. }
  490. }
  491.  
  492. public override bool AllowUserJoin(Player player)
  493. {
  494. if (allow_join == true)
  495. {
  496. return true;
  497. }
  498. else
  499. {
  500. return false;
  501. }
  502. }
  503.  
  504. void Kick()
  505. {
  506. allow_join = false;
  507. for (int i = 0; i < arrplayer.Length; i++)
  508. {
  509. if (arrplayer[i] != null)
  510. {
  511. PlayerIO.BigDB.Load("PlayerObjects", arrplayer[i].username, delegate (DatabaseObject obj)
  512. {
  513. obj.Set("Roomname", "");
  514. arrplayer[i].Disconnect();
  515. Null(arrplayer[i]);
  516. });
  517.  
  518. }
  519. }
  520. }
  521.  
  522. void Null(Player player)
  523. {
  524. if (player == player_1)
  525. {
  526. player_1 = null;
  527. }
  528. else if (player == player_2)
  529. {
  530. player_2 = null;
  531. }
  532.  
  533. player = null;
  534. }
  535.  
  536. void Timer(int sec)
  537. {
  538. timer = AddTimer(
  539. delegate ()
  540. {
  541. if (turn_1 == true)
  542. {
  543. number = 1;
  544. }
  545. else if (turn_2 == true)
  546. {
  547. number = 2;
  548. }
  549. System.Random r;
  550. r = new System.Random();
  551. int v = r.Next(0, 7);
  552.  
  553. while (value_col[v] >= 6)
  554. {
  555. v = r.Next(0, 7);
  556. }
  557. field[v, value_col[v]] = number;
  558. value_col[v]++;
  559. Writer();
  560. turn_1 = !turn_1;
  561. turn_2 = !turn_2;
  562. Broadcast("uTurn", turn_1, turn_2, field_code, DateTime.UtcNow.AddSeconds(15).ToString(String.Format("MM.dd.yyyy HH:mm:ss")));
  563. Inspector();
  564. time_last = DateTime.UtcNow;
  565. sec = 15000;
  566. },
  567. sec);
  568. }
  569.  
  570. public void Writer()
  571. {
  572. field_code = "";
  573. int k = 0;
  574. string[] arr = new string[42];
  575. for (int x = 0; x < 7; x++)
  576. {
  577. for (int y = 0; y < 6; y++)
  578. {
  579. arr[k] = field[x, y].ToString();
  580. field_code = field_code + arr[k];
  581. k++;
  582. }
  583. }
  584. }
  585.  
  586. public void Inspector()
  587. {
  588. for (int x = 0; x < 7; x++)
  589. {
  590. for (int y = 0; y < 6; y++)
  591. {
  592. if (((x + 3 < 7 && field[x, y] == 1 && field[x + 1, y] == 1 && field[x + 2, y] == 1 && field[x + 3, y] == 1) ||
  593. (y + 3 < 6 && field[x, y] == 1 && field[x, y + 1] == 1 && field[x, y + 2] == 1 && field[x, y + 3] == 1) ||
  594. (x + 3 < 7 && y + 3 < 6 && field[x, y] == 1 && field[x + 1, y + 1] == 1 && field[x + 2, y + 2] == 1 && field[x + 3, y + 3] == 1) ||
  595. (x + 3 < 7 && y - 3 > -1 && field[x, y] == 1 && field[x + 1, y - 1] == 1 && field[x + 2, y - 2] == 1 && field[x + 3, y - 3] == 1))
  596. &&
  597. ((x + 3 < 7 && field[x, y] == 2 && field[x + 1, y] == 2 && field[x + 2, y] == 2 && field[x + 3, y] == 2) ||
  598. (y + 3 < 6 && field[x, y] == 2 && field[x, y + 1] == 2 && field[x, y + 2] == 2 && field[x, y + 3] == 2) ||
  599. (x + 3 < 7 && y + 3 < 6 && field[x, y] == 2 && field[x + 1, y + 1] == 2 && field[x + 2, y + 2] == 2 && field[x + 3, y + 3] == 2) ||
  600. (x + 3 < 7 && y - 3 > -1 && field[x, y] == 2 && field[x + 1, y - 1] == 2 && field[x + 2, y - 2] == 2 && field[x + 3, y - 3] == 2)))
  601. {
  602. Console.WriteLine("Beide");
  603. turn_1 = false;
  604. turn_2 = false;
  605. timer.Stop();
  606. //timer = null;
  607. Broadcast("uTurn", turn_1, turn_2, field_code); //Oder lieber End; ??
  608. return;
  609. }
  610. else if ((x + 3 < 7 && field[x, y] == 1 && field[x + 1, y] == 1 && field[x + 2, y] == 1 && field[x + 3, y] == 1) ||
  611. (y + 3 < 6 && field[x, y] == 1 && field[x, y + 1] == 1 && field[x, y + 2] == 1 && field[x, y + 3] == 1) ||
  612. (x + 3 < 7 && y + 3 < 6 && field[x, y] == 1 && field[x + 1, y + 1] == 1 && field[x + 2, y + 2] == 1 && field[x + 3, y + 3] == 1) ||
  613. (x + 3 < 7 && y - 3 > -1 && field[x, y] == 1 && field[x + 1, y - 1] == 1 && field[x + 2, y - 2] == 1 && field[x + 3, y - 3] == 1))
  614. {
  615. Console.WriteLine("Spieler 1");
  616. turn_1 = false;
  617. turn_2 = false;
  618. timer.Stop();
  619. //timer = null;
  620. Broadcast("uTurn", turn_1, turn_2, field_code);
  621. return;
  622. }
  623. else if ((x + 3 < 7 && field[x, y] == 2 && field[x + 1, y] == 2 && field[x + 2, y] == 2 && field[x + 3, y] == 2) ||
  624. (y + 3 < 6 && field[x, y] == 2 && field[x, y + 1] == 2 && field[x, y + 2] == 2 && field[x, y + 3] == 2) ||
  625. (x + 3 < 7 && y + 3 < 6 && field[x, y] == 2 && field[x + 1, y + 1] == 2 && field[x + 2, y + 2] == 2 && field[x + 3, y + 3] == 2) ||
  626. (x + 3 < 7 && y - 3 > -1 && field[x, y] == 2 && field[x + 1, y - 1] == 2 && field[x + 2, y - 2] == 2 && field[x + 3, y - 3] == 2))
  627. {
  628. Console.WriteLine("Spieler 2");
  629. turn_1 = false;
  630. turn_2 = false;
  631. timer.Stop();
  632. //timer = null;
  633. Broadcast("uTurn", turn_1, turn_2, field_code);
  634. return;
  635. }
  636. else if (value_col[0] >= 6 && value_col[1] >= 6 && value_col[2] >= 6 && value_col[3] >= 6 && value_col[4] >= 6 && value_col[5] >= 6 && value_col[6] >= 6)
  637. {
  638. Console.WriteLine("Beide_2");
  639. turn_1 = false;
  640. turn_2 = false;
  641. timer.Stop();
  642. //timer = null;
  643. Broadcast("uTurn", turn_1, turn_2, field_code);
  644. return;
  645. }
  646. }
  647. }
  648. }
  649. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement