Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.70 KB | None | 0 0
  1. //var flag = 0; // 1 PC & 0 User
  2. var turn = 1;
  3. var wait = 1;
  4. var nim = 0;
  5. var mode = 0;
  6. var size = 0;
  7. var game;
  8. var evdata;
  9. var rack;
  10. var stack=0;
  11. var pieces = 0;
  12. var user;
  13. var pass;
  14. var k=0;
  15. //var online = 0; usar no leave
  16.  
  17. //--------------------------------------------------------
  18. // CHECK LOGIN //
  19. //--------------------------------------------------------
  20. function checkLogin()
  21. {
  22. var nameRegex = /^[a-zA-Z0-9\_]+$/;
  23. var username_teste = document.getElementById('user').value;
  24. var password_teste= document.getElementById('pass').value;
  25. var match = document.getElementById('user').value.match(nameRegex);
  26.  
  27. if(username_teste.length === 0)
  28. {
  29. alert("Your username is empty!");
  30. return false;
  31. }
  32.  
  33. if(match === null)
  34. {
  35. alert("Your username is not valid. Only characters A-Z, a-z and '_' are acceptable.");
  36. return false;
  37. }
  38.  
  39. if(username_teste.length > 15)
  40. {
  41. alert("You have more than 15 characters on username!");
  42. return false;
  43. }
  44.  
  45. if(password_teste.length === 0)
  46. {
  47. alert("Your password is empty!");
  48. return false;
  49. }
  50.  
  51. if(password_teste.length < 4)
  52. {
  53. alert("Your password is too small!");
  54. return false;
  55. }
  56.  
  57. document.getElementById('user').innerHTML = username_teste;
  58. return true;
  59. }
  60.  
  61. //------------------------------------------------------------
  62. // REGISTER //
  63. //------------------------------------------------------------
  64. function register(){
  65. var user = document.getElementById("user").value;
  66. var pass = document.getElementById("pass").value;
  67.  
  68. if(checkLogin()){
  69.  
  70. var xhr = new XMLHttpRequest();
  71. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/register",true);
  72. xhr.onreadystatechange = function() {
  73.  
  74. if(xhr.readyState < 4)
  75. return;
  76. if(xhr.status == 200){ //faz login
  77. var resposta = JSON.parse(xhr.responseText);
  78. username = name;
  79. password = pass;
  80. document.getElementById('painel_login').style.display = 'none';
  81. document.getElementById('jogo_on').style.display = 'none';
  82. document.getElementById('painel_jogo').style.display = 'block';
  83. }
  84. else{
  85. alert("Password errada!");
  86. document.getElementById("my_login").reset();
  87. }
  88. }
  89. xhr.send(JSON.stringify({"nick": user,"pass": pass}));
  90. }
  91. else{
  92. document.getElementById("my_login").reset();
  93. }
  94. }
  95. //------------------------------------------------------------
  96. // JOIN //
  97. //------------------------------------------------------------
  98. function join(){
  99. var group = "19";
  100. user = document.getElementById("user").value;
  101. pass = document.getElementById("pass").value;
  102. size = "5"; // por mudar
  103. console.log("Username: "+ user + "| Password: "+pass);
  104.  
  105. var xhr = new XMLHttpRequest();
  106.  
  107. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/join",true);
  108. xhr.onreadystatechange = function() {
  109.  
  110. if(xhr.readyState < 4)
  111. return;
  112. if(xhr.status == 200){
  113. var game_ash = JSON.parse(xhr.responseText);
  114. game=game_ash.game;
  115. update(user,game);
  116. wait = 1;
  117. }
  118. }
  119. xhr.send(JSON.stringify({"group": group,"nick": user,"pass": pass, "size": size}));
  120. }
  121. //------------------------------------------------------------
  122. // UPDATE //
  123. //------------------------------------------------------------
  124. function update(user,game){
  125. var xhr = new XMLHttpRequest();
  126. console.log("ON UPDATE");
  127. xhr.open("GET",'http://twserver.alunos.dcc.fc.up.pt:8008/update?nick='+user+'&game='+ game,true);
  128. var eventSource = new EventSource('http://twserver.alunos.dcc.fc.up.pt:8008/update?'+'nick='+user + '&game='+ game);
  129. var flag = 0;
  130. eventSource.onmessage = function(event) {
  131. evdata = JSON.parse(event.data);
  132. rack=evdata.rack;
  133. rack.reverse();
  134. console.log(evdata);
  135.  
  136.  
  137. if(wait==1){
  138.  
  139. mode = 1;
  140. wait = 0;
  141. }
  142. else {
  143. console.log(evdata);
  144. turn = 1;
  145.  
  146. }
  147. // else if(evdata.turn == user){
  148. // console.log(evdata);
  149. // turn = 0;
  150. gerar_tab(evdata.rack);
  151. //
  152. // }
  153. }
  154. }
  155.  
  156. //------------------------------------------------------------
  157. // NOTIFY //
  158. //------------------------------------------------------------
  159. function notify(stack_2,pieces_2){
  160. user = document.getElementById("user").value;
  161. pass = document.getElementById("pass").value;
  162. stack = stack_2;
  163. pieces = pieces_2;
  164.  
  165. var xhr = new XMLHttpRequest();
  166. //var game_ash = JSON.parse(xhr.responseText);
  167. //var game=game_ash.game;
  168. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/notify",true);
  169. xhr.onreadystatechange = function() {
  170. if(xhr.readyState < 4)
  171. return;
  172. if(xhr.status == 200){
  173. var notify = JSON.parse(xhr.responseText);
  174. }
  175. }
  176. xhr.send(JSON.stringify({"nick": user,"pass":pass,"game": game, "stack": stack,"pieces":pieces}));
  177. }
  178.  
  179. //------------------------------------------------------------
  180. // RANKING //
  181. //------------------------------------------------------------
  182. //------------------------------------------------------------
  183. // LEAVE //
  184. //------------------------------------------------------------
  185. //------------------------------------------------------------
  186. // GERA TAB //
  187. //------------------------------------------------------------
  188. function gerar_tab(rack){
  189. if (mode == 0){
  190. document.getElementById('tabuleiro').style.display = 'block';
  191. document.getElementById('play').style.display = 'inline-block';
  192. document.getElementById('quit').style.display = 'inline-block';
  193.  
  194. nim = tam * tam;
  195. var table = document.getElementById('tableclass');
  196. console.log("= " + tam);
  197. for (var i = 0; i < tam; i++) {
  198. var row = table.insertRow();
  199. row.classList.add('tr');
  200.  
  201. for (var j = 0; j < tam; j++) {
  202. var td = row.insertCell();
  203. td.classList.add('td');
  204. cell_onclick(td, i, j);
  205. }
  206. }
  207. if (flag != 0)
  208. setTimeout(pc_play, 100);
  209.  
  210. }
  211. else{
  212. rack.reverse(); //sai invertido 1,2,3...
  213. console.log("IN GERA TAB");
  214. document.getElementById('jogo_on').style.display = 'none';
  215. document.getElementById('gerar_tab').style.display = 'block';
  216. document.getElementById('tabuleiro').style.display = 'block';
  217. document.getElementById('play').style.display = 'inline-block';
  218. document.getElementById('quit').style.display = 'inline-block';
  219. console.log("length: "+rack);
  220.  
  221. nim = rack.length * rack.length;
  222. var table = document.getElementById('tableclass');
  223. for (var i = 0; i < rack.length; i++) {
  224. var row = table.insertRow();
  225. row.classList.add('tr');
  226. console.log("row " + i+" ");
  227. for (var j =0; j <rack[i]; j++) {
  228. var td = row.insertCell();
  229. td.classList.add('td');
  230. cell_onclick(td, i, j);
  231. }
  232. }
  233. console.log("NO FIM DO CELL" + rack);
  234.  
  235.  
  236. /*
  237. for (var i = 0; i < rack.length; i++) {
  238.  
  239. console.log("row " + i+" ");
  240.  
  241. for (var j =0; j <rack[i]; j++) {
  242. cell_onclick(td, j, i);
  243. }
  244. }*/
  245. //update(user,game);
  246. //rack.reverse();
  247.  
  248. }
  249.  
  250. }
  251.  
  252. function gerar_tab2() {
  253. var table = document.getElementById('tabelaclassificacao');
  254.  
  255. for (var i = 0; i < 11 ;i++) {
  256. var row = table.insertRow();
  257. row.classList.add('tr_1');
  258.  
  259. for (var j = 0; j < 2 ;j++) {
  260. var td = row.insertCell();
  261. td.classList.add('td_1');
  262.  
  263. }
  264. }
  265. var n = "Nome";
  266. var t = "Tempo";
  267. document.getElementById("tabelaclassificacao").rows[0].cells[0].innerHTML = n;
  268. document.getElementById("tabelaclassificacao").rows[0].cells[1].innerHTML = t;
  269.  
  270.  
  271. for ( i = 1; i <= 10 ;i++) {
  272. var player_class = i + 'º -------------- ';
  273. var player_time = "-- / -- / --";
  274. console.log(player_class);
  275. document.getElementById("tabelaclassificacao").rows[i].cells[0].innerHTML = player_class;
  276. document.getElementById("tabelaclassificacao").rows[i].cells[1].innerHTML = player_time;
  277.  
  278. }
  279.  
  280. }
  281.  
  282.  
  283. function getCell(l, c) {
  284. var boardElement = document.getElementById("tableclass");
  285. return boardElement.rows[l].cells[c];
  286. }
  287.  
  288. function pc_play() {
  289. document.getElementById('demo_3').style.display = 'none';
  290.  
  291. var x, y;
  292. var cell;
  293. // alert(nim);
  294.  
  295. if (nim <= 0)
  296. return;
  297.  
  298. do {
  299. x = Math.floor((Math.random() * tam));
  300. y = Math.floor((Math.random() * tam));
  301. // console.log(x + " " + y + " " + tam);
  302. } while (getCell(x, y).className != "td");
  303.  
  304. for (var i = x; i >= 0; i--) {
  305. var cell_vizinha = getCell(i, y);
  306. if (cell_vizinha.className == "inactive")
  307. break;
  308. cell_vizinha.className = "temporario";
  309.  
  310. }
  311.  
  312. setTimeout(function() {
  313. for (var i = x; i >= 0; i--) {
  314. var cell_vizinha = getCell(i, y);
  315. if (cell_vizinha.className == "inactive")
  316. break;
  317. cell_vizinha.className = "inactive";
  318. nim--;
  319.  
  320. }
  321. winner();
  322.  
  323. flag = 0;
  324. }, 1000);
  325. }
  326.  
  327. function winner() {
  328. if (nim <= 0) {
  329. if (flag == 0) {
  330. alert("Parabéns, ganhaste!");
  331.  
  332. } else {
  333. alert("Perdeste, tente de novo!");
  334.  
  335. }
  336.  
  337. document.getElementById('tabuleiro').style.display = 'none';
  338. document.getElementById('gerar_tab').style.display = 'none';
  339. // document.getElementById('myFunction').style.display = 'none';
  340. document.getElementById('quit').style.display = 'none';
  341. document.getElementById('play').style.display = 'none';
  342. document.getElementById('try_again').style.display = 'block';
  343.  
  344. return;
  345. }
  346. }
  347.  
  348. function cell_onclick(cell,l, c) {
  349. console.log(" cell quem está a jogar: " + evdata.turn);
  350. console.log("cell joga em que coluna: " + evdata.rack);
  351. console.log("RACK NO CELL " + rack);
  352. var data = [];
  353. var length = size; // user defined length
  354.  
  355. for(var i = 0; i < length; i++) {
  356. data.push(i);
  357. }
  358. cell.onclick = function() {
  359. if (cell.className == "td") {
  360. k=data[c];
  361. for (var i = l; i >=k ; i--) {
  362.  
  363.  
  364. var cell_vizinha = getCell(i, c);
  365. //console.log("CELL ON L E c" + l + " " +i + " ");
  366.  
  367. if (cell_vizinha.className == "inactive" )
  368. break;
  369.  
  370. cell_vizinha.className="inactive";
  371. nim--;
  372. //console.log("RACK NO CELL no fim " + rack);
  373.  
  374. }
  375. // nim = nim - (l + 1);
  376.  
  377. //winner();
  378.  
  379. //flag = 1;
  380. //if(mod==0)
  381. //setTimeout(pc_play, 3);
  382. }
  383. stack = c+1;
  384. pieces = size-l;
  385. notify(stack,pieces);
  386. }
  387.  
  388.  
  389. //update(user,game);
  390.  
  391. cell.onmouseover = function() {
  392. if (cell.className !== "inactive" && cell.className !== "temporario")
  393. k=data[c];
  394. for (var i = l - 1; i >= k; i--) {
  395. var cell_vizinha = getCell(i, c);
  396. if (cell_vizinha.className == "inactive"
  397. || cell_vizinha.className == "temporario")
  398. break;
  399. cell_vizinha.className = "active";
  400. }
  401. }
  402.  
  403. cell.onmouseout = function() {
  404. if (cell.className !== "inactive" && cell.className !== "temporario")
  405. k=data[c];
  406. for (var i = l; i >= k; i--) {
  407. var cell_vizinha = getCell(i, c);
  408. if (cell_vizinha.className == "inactive"
  409. || cell_vizinha.className == "temporario")
  410. break;
  411. cell_vizinha.className = "td";
  412. }
  413. }
  414.  
  415. }
  416.  
  417. function clearBoard() {
  418.  
  419. var i;
  420. for (i = 0; i < tam; i++) {
  421. if (document.getElementById("tableclass").rows.length != 0)
  422. document.getElementById("tableclass").deleteRow(0);
  423. }
  424. }
  425. function clearBoard_rank() {
  426.  
  427. var i;
  428. for (i = 0; i < 10; i++) {
  429. if (document.getElementById("tabelaclassificacao").rows.length != 0)
  430. document.getElementById("tabelaclassificacao").deleteRow(0);
  431.  
  432. }
  433. }
  434.  
  435. function modo_online_jogo() {
  436. document.getElementById('modo_jogo').style.display = 'none';
  437.  
  438. document.getElementById('jogo_on').style.display = 'block';
  439. }
  440.  
  441. function myFunction() {
  442. var x, text;
  443.  
  444. x = document.getElementById("numb").value;
  445. document.getElementById('demo_3').style.display = 'none';
  446.  
  447. document.getElementById('gerar_tab').style.display = 'block';
  448. tam = x;
  449. //clearBoard();
  450. gerar_tab();
  451. }
  452.  
  453. function first_play() {
  454. document.getElementById('demo').style.display = 'none';
  455. document.getElementById('demo_2').style.display = 'block';
  456.  
  457. flag = 0// user
  458.  
  459. }
  460. function first_play_pc() {
  461. document.getElementById('demo').style.display = 'none';
  462. document.getElementById('demo_2').style.display = 'block';
  463.  
  464. flag = 1; // pc
  465.  
  466. }
  467.  
  468. function dif_play() {
  469. document.getElementById('demo_2').style.display = 'none';
  470. document.getElementById('demo_3').style.display = 'block';
  471.  
  472. }
  473. function registar() {
  474. document.getElementById('header_painel2').style.display = 'none';
  475. document.getElementById('painel_login').style.display = 'block';
  476. }
  477.  
  478. function login() {
  479. document.getElementById('painel_rank').style.display = 'none';
  480. document.getElementById('painel_instrucoes').style.display = 'none';
  481. document.getElementById('gerar_tab').style.display = 'none';
  482. document.getElementById('painel_jogo').style.display = 'none';
  483. document.getElementById('tabuleiro').style.display = 'none';
  484. document.getElementById('painel_init').style.display = 'none';
  485. document.getElementById('painel_login').style.display = 'block';
  486. }
  487. function login_wData() {
  488. document.getElementById('painel_login').style.display = 'none';
  489. document.getElementById('painel_init').style.display = 'block';
  490. }
  491. function config() {
  492. clearBoard();
  493. document.getElementById('painel_login').style.display = 'none';
  494. document.getElementById('painel_rank').style.display = 'none';
  495. document.getElementById('painel_init').style.display = 'none';
  496. document.getElementById('painel_instrucoes').style.display = 'none';
  497. document.getElementById('gerar_tab').style.display = 'none';
  498. document.getElementById('painel_jogo').style.display = 'block';
  499. document.getElementById('tabuleiro').style.display = 'none';
  500.  
  501. }
  502. function modo_jogo() {
  503. document.getElementById('gerar_tab').style.display = 'none';
  504. document.getElementById('modo_jogo').style.display = 'none';
  505. document.getElementById('demo').style.display = 'block';
  506. }
  507. function instrucoes() {
  508. document.getElementById('gerar_tab').style.display = 'none';
  509. document.getElementById('painel_jogo').style.display = 'none';
  510. document.getElementById('painel_login').style.display = 'none';
  511. document.getElementById('painel_init').style.display = 'none';
  512. document.getElementById('painel_rank').style.display = 'none';
  513. document.getElementById('painel_instrucoes').style.display = 'block';
  514.  
  515. }
  516. function rank() {
  517. document.getElementById('gerar_tab').style.display = 'none';
  518. document.getElementById('painel_jogo').style.display = 'none';
  519. document.getElementById('painel_login').style.display = 'none';
  520. document.getElementById('painel_init').style.display = 'none';
  521. document.getElementById('painel_instrucoes').style.display = 'none';
  522. document.getElementById('gerar_tab').style.display = 'none';
  523. clearBoard_rank();
  524. document.getElementById('painel_rank').style.display = 'block';
  525. gerar_tab2();
  526. document.getElementById('tabelaclassificacao').style.display = 'block';
  527.  
  528. }
  529.  
  530. function home() {
  531. clearBoard();
  532. document.getElementById('tabuleiro').style.display = 'none';
  533. document.getElementById('quitgame').style.display = 'none';
  534. document.getElementById('gerar_tab').style.display = 'none';
  535. document.getElementById('painel_jogo').style.display = 'none';
  536. document.getElementById('painel_instrucoes').style.display = 'none';
  537. document.getElementById('painel_login').style.display = 'none';
  538. document.getElementById('painel_rank').style.display = 'none';
  539. document.getElementById('painel_init').style.display = 'block';
  540. //document.getElementById('demo').style.display = 'block';
  541.  
  542. }
  543. function table_click() {
  544. var boardElement = document.getElementById("tabuleiro");
  545. alert(boardElement.rows[l].cells[c]);
  546. }
  547.  
  548. function try_again() {
  549. clearBoard();
  550. document.getElementById('try_again').style.display = 'none';
  551. document.getElementById('demo').style.display = 'block';
  552. }
  553. function playbutton(){
  554. document.getElementById('painel_login').style.display = 'none';
  555. document.getElementById('painel_rank').style.display = 'none';
  556. document.getElementById('painel_init').style.display = 'none';
  557. document.getElementById('painel_instrucoes').style.display = 'none';
  558. document.getElementById('gerar_tab').style.display = 'block';
  559. document.getElementById('painel_jogo').style.display = 'block';
  560. document.getElementById('tabuleiro').style.display = 'block';
  561. }
  562. function quitbutton(){
  563. document.getElementById('play').style.display = 'none';
  564. document.getElementById('quit').style.display = 'none';
  565. document.getElementById('painel_jogo').style.display = 'none';
  566. document.getElementById('gerar_tab').style.display = 'none';
  567. document.getElementById('tabuleiro').style.display = 'none';
  568. document.getElementById('quitgame').style.display = 'block';
  569. }
  570. function yes(){
  571. clearBoard();
  572. document.getElementById('tabuleiro').style.display = 'none';
  573. document.getElementById('quitgame').style.display = 'none';
  574. document.getElementById('painel_jogo').style.display = 'none';
  575. document.getElementById('painel_init').style.display = 'block';
  576. document.getElementById('demo').style.display = 'block';
  577.  
  578. }
  579. function quitfunction(){
  580. document.getElementById('play').style.display = 'inline-block';
  581. document.getElementById('quitgame').style.display = 'none';
  582. document.getElementById('quit').style.display = 'inline-block';
  583. document.getElementById('painel_jogo').style.display = 'block';
  584. document.getElementById('tabuleiro').style.display = 'block';
  585. document.getElementById('gerar_tab').style.display = 'block';
  586.  
  587. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement