Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.46 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 = "3"; // 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. if(rack!=undefined)
  134. rack= rack.reverse();
  135. console.log(evdata);
  136. if(evdata.turn!== undefined){
  137. if(evdata.turn === user){
  138. turn = 1;
  139. }
  140. else
  141. turn = 0;
  142. }
  143. if(wait==1){
  144. mode = 1;
  145.  
  146. gerar_tab(evdata.rack);
  147. wait=0;
  148. }
  149. else {
  150. update_tab(rack);
  151. if(evdata.winner != undefined){
  152. winner();
  153. //alert(evdata.winner + " venceu!");
  154.  
  155. }
  156. console.log(evdata);
  157.  
  158. }
  159.  
  160. }
  161. }
  162.  
  163. //------------------------------------------------------------
  164. // NOTIFY //
  165. //------------------------------------------------------------
  166. function notify(stack_2,pieces_2){
  167. user = document.getElementById("user").value;
  168. pass = document.getElementById("pass").value;
  169. stack = stack_2;
  170. pieces = pieces_2;
  171.  
  172. var xhr = new XMLHttpRequest();
  173. //var game_ash = JSON.parse(xhr.responseText);
  174. //var game=game_ash.game;
  175. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/notify",true);
  176. xhr.onreadystatechange = function() {
  177. if(xhr.readyState < 4)
  178. return;
  179. if(xhr.status == 200){
  180. var notify = JSON.parse(xhr.responseText);
  181. }
  182. }
  183. xhr.send(JSON.stringify({"nick": user,"pass":pass,"game": game, "stack": stack,"pieces":pieces}));
  184. }
  185.  
  186. //------------------------------------------------------------
  187. // RANKING //
  188. //------------------------------------------------------------
  189. //------------------------------------------------------------
  190. // LEAVE //
  191. //------------------------------------------------------------
  192. function leave(){
  193. user = document.getElementById("user").value;
  194.  
  195. var xhr = new XMLHttpRequest();
  196.  
  197. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/leave",true);
  198. xhr.onreadystatechange = function() {
  199.  
  200. if(xhr.readyState < 4)
  201. return;
  202. if(xhr.status == 200){
  203. var leave = JSON.parse(xhr.responseText);
  204. if(turn === 1){
  205. winner();
  206. }
  207.  
  208. }
  209. }
  210. xhr.send(JSON.stringify({"game":game,"nick": user}));
  211. }
  212. //------------------------------------------------------------
  213. // GERA TAB //
  214. //------------------------------------------------------------
  215. function gerar_tab(rack){
  216. if (mode == 0){
  217. document.getElementById('tabuleiro').style.display = 'block';
  218. document.getElementById('play').style.display = 'inline-block';
  219. document.getElementById('quit').style.display = 'inline-block';
  220.  
  221. nim = tam * tam;
  222. var table = document.getElementById('tableclass');
  223. console.log("= " + tam);
  224. for (var i = 0; i < tam; i++) {
  225. var row = table.insertRow();
  226. row.classList.add('tr');
  227.  
  228. for (var j = 0; j < tam; j++) {
  229. var td = row.insertCell();
  230. td.classList.add('td');
  231. cell_onclick(td, i, j);
  232. }
  233. }
  234. if (flag != 0)
  235. setTimeout(pc_play, 100);
  236.  
  237. }
  238. else{
  239. rack.reverse(); //sai invertido 1,2,3...
  240. console.log("IN GERA TAB");
  241. document.getElementById('jogo_on').style.display = 'none';
  242. document.getElementById('gerar_tab').style.display = 'block';
  243. document.getElementById('tabuleiro').style.display = 'block';
  244. document.getElementById('play').style.display = 'inline-block';
  245. document.getElementById('quit').style.display = 'inline-block';
  246. console.log("length: "+rack);
  247.  
  248. nim = rack.length * rack.length;
  249. var table = document.getElementById('tableclass');
  250. for (var i = 0; i < rack.length; i++) {
  251. var row = table.insertRow();
  252. row.classList.add('tr');
  253. console.log("row " + i+" ");
  254. for (var j =0; j <rack[i]; j++) {
  255. var td = row.insertCell();
  256. td.classList.add('td');
  257. cell_onclick(td, i, j);
  258. }
  259. }
  260. console.log("NO FIM DO CELL" + rack);
  261.  
  262.  
  263. /*
  264. for (var i = 0; i < rack.length; i++) {
  265.  
  266. console.log("row " + i+" ");
  267.  
  268. for (var j =0; j <rack[i]; j++) {
  269. cell_onclick(td, j, i);
  270. }
  271. }*/
  272. //update(user,game);
  273. //rack.reverse();
  274.  
  275. }
  276.  
  277. }
  278. function winner(){
  279. document.getElementById('tabuleiro').style.display = 'none';
  280. alert(" winner" + evdata.winner + " venceu!");
  281. document.getElementById('gerar_tab').style.display = 'none';
  282. document.getElementById('modo_jogo').style.display = 'none';
  283. document.getElementById('play').style.display = 'none';
  284. document.getElementById('quit').style.display = 'none';
  285.  
  286.  
  287. document.getElementById('painel_init').style.display = 'block';
  288.  
  289. }
  290.  
  291. function gerar_tab2() {
  292. var table = document.getElementById('tabelaclassificacao');
  293.  
  294. for (var i = 0; i < 11 ;i++) {
  295. var row = table.insertRow();
  296. row.classList.add('tr_1');
  297.  
  298. for (var j = 0; j < 2 ;j++) {
  299. var td = row.insertCell();
  300. td.classList.add('td_1');
  301.  
  302. }
  303. }
  304. var n = "Nome";
  305. var t = "Tempo";
  306. document.getElementById("tabelaclassificacao").rows[0].cells[0].innerHTML = n;
  307. document.getElementById("tabelaclassificacao").rows[0].cells[1].innerHTML = t;
  308.  
  309.  
  310. for ( i = 1; i <= 10 ;i++) {
  311. var player_class = i + 'º -------------- ';
  312. var player_time = "-- / -- / --";
  313. console.log(player_class);
  314. document.getElementById("tabelaclassificacao").rows[i].cells[0].innerHTML = player_class;
  315. document.getElementById("tabelaclassificacao").rows[i].cells[1].innerHTML = player_time;
  316.  
  317. }
  318.  
  319. }
  320.  
  321.  
  322. function getCell(l, c) {
  323. var boardElement = document.getElementById("tableclass");
  324. return boardElement.rows[l].cells[c];
  325. }
  326.  
  327. function pc_play() {
  328. document.getElementById('demo_3').style.display = 'none';
  329.  
  330. var x, y;
  331. var cell;
  332. // alert(nim);
  333.  
  334. if (nim <= 0)
  335. return;
  336.  
  337. do {
  338. x = Math.floor((Math.random() * tam));
  339. y = Math.floor((Math.random() * tam));
  340. // console.log(x + " " + y + " " + tam);
  341. } while (getCell(x, y).className != "td");
  342.  
  343. for (var i = x; i >= 0; i--) {
  344. var cell_vizinha = getCell(i, y);
  345. if (cell_vizinha.className == "inactive")
  346. break;
  347. cell_vizinha.className = "temporario";
  348.  
  349. }
  350.  
  351. setTimeout(function() {
  352. for (var i = x; i >= 0; i--) {
  353. var cell_vizinha = getCell(i, y);
  354. if (cell_vizinha.className == "inactive")
  355. break;
  356. cell_vizinha.className = "inactive";
  357. nim--;
  358.  
  359. }
  360. winner();
  361.  
  362. flag = 0;
  363. }, 1000);
  364. }
  365.  
  366. function winner_off() {
  367. if (nim <= 0) {
  368. if (flag == 0) {
  369. alert("Parabéns, ganhaste!");
  370.  
  371. } else {
  372. alert("Perdeste, tente de novo!");
  373.  
  374. }
  375.  
  376. document.getElementById('tabuleiro').style.display = 'none';
  377. document.getElementById('gerar_tab').style.display = 'none';
  378. // document.getElementById('myFunction').style.display = 'none';
  379. document.getElementById('quit').style.display = 'none';
  380. document.getElementById('play').style.display = 'none';
  381. document.getElementById('try_again').style.display = 'block';
  382.  
  383. return;
  384. }
  385. }
  386. function update_tab(rack){
  387. var tab = document.getElementById('tableclass');
  388. var count =0;
  389. for(var i=0;i<rack.length-1;i++){
  390. count = 1;
  391. for(var j=size-1;j>=0;j--){
  392. console.log("i " + i + "j " + j);
  393. if(count>rack[i]){
  394. //adioncar classe inativo
  395. if(getCell(j,i)!== undefined){
  396. getCell(j,i).className="inactive";
  397. getCell(j,i).onmouseover=undefined;
  398. getCell(j,i).onmouseout=undefined;
  399. }
  400. }
  401. else{
  402. count++;
  403. }
  404. }
  405. }
  406.  
  407. }
  408.  
  409. function cell_onclick(cell,l, c) {
  410. console.log(" cell quem está a jogar: " + evdata.turn);
  411. console.log("cell joga em que coluna: " + evdata.rack);
  412. // rack.reverse();
  413. console.log("RACK NO CELL " + rack);
  414. var data = [];
  415. var length = size; // user defined length
  416.  
  417. for(var i = 0; i < length; i++) {
  418. data.push(i);
  419. }
  420.  
  421. cell.onclick = function() {
  422. if(turn === 1){
  423. if (cell.className == "td") {
  424. k=data[c];
  425. for (var i = l; i >=k ; i--) {
  426.  
  427. var cell_vizinha = getCell(i, c);
  428. console.log("CELL ON L E c" + l + " " +i + " ");
  429.  
  430. if (cell_vizinha.className == "inactive" )
  431. break;
  432.  
  433. cell_vizinha.className="inactive";
  434. nim--;
  435. //console.log("RACK NO CELL no fim " + rack);
  436.  
  437. }
  438. // nim = nim - (l + 1);
  439.  
  440. //winner();
  441.  
  442. //flag = 1;
  443. //if(mod==0)
  444. //setTimeout(pc_play, 3);
  445. }
  446.  
  447. stack = size-c-1;
  448. pieces = size-l-1;
  449. notify(stack,pieces);
  450. }
  451. else
  452. alert("Não é a tua vez!");
  453. }
  454.  
  455.  
  456.  
  457.  
  458. cell.onmouseover = function() {
  459. if (cell.className !== "inactive" && cell.className !== "temporario")
  460. for (var i = l; i >= 0; i--) {
  461. var cell_vizinha = getCell(i, c);
  462. if(cell_vizinha !== undefined){
  463. if (cell_vizinha.className == "inactive"
  464. || cell_vizinha.className == "temporario")
  465. break;
  466. cell_vizinha.className = "active";
  467. }
  468. }
  469. }
  470.  
  471. cell.onmouseout = function() {
  472. if (cell.className !== "inactive" && cell.className !== "temporario")
  473.  
  474. for (var i = size-1; i >= 0; i--) {
  475. var cell_vizinha = getCell(i, c);
  476. if(cell_vizinha !== undefined){
  477.  
  478.  
  479. if (cell_vizinha.className == "inactive"
  480. || cell_vizinha.className == "temporario")
  481. break;
  482. cell_vizinha.className = "td";
  483. }
  484. }
  485. }
  486.  
  487. }
  488.  
  489. function clearBoard() {
  490.  
  491. var i;
  492. for (i = 0; i < tam; i++) {
  493. if (document.getElementById("tableclass").rows.length != 0)
  494. document.getElementById("tableclass").deleteRow(0);
  495. }
  496. }
  497. function clearBoard_rank() {
  498.  
  499. var i;
  500. for (i = 0; i < 10; i++) {
  501. if (document.getElementById("tabelaclassificacao").rows.length != 0)
  502. document.getElementById("tabelaclassificacao").deleteRow(0);
  503.  
  504. }
  505. }
  506.  
  507. function modo_online_jogo() {
  508. document.getElementById('modo_jogo').style.display = 'none';
  509.  
  510. document.getElementById('jogo_on').style.display = 'block';
  511. }
  512.  
  513. function myFunction() {
  514. var x, text;
  515.  
  516. x = document.getElementById("numb").value;
  517. document.getElementById('demo_3').style.display = 'none';
  518.  
  519. document.getElementById('gerar_tab').style.display = 'block';
  520. tam = x;
  521. //clearBoard();
  522. gerar_tab();
  523. }
  524.  
  525. function first_play() {
  526. document.getElementById('demo').style.display = 'none';
  527. document.getElementById('demo_2').style.display = 'block';
  528.  
  529. flag = 0// user
  530.  
  531. }
  532. function first_play_pc() {
  533. document.getElementById('demo').style.display = 'none';
  534. document.getElementById('demo_2').style.display = 'block';
  535.  
  536. flag = 1; // pc
  537.  
  538. }
  539.  
  540. function dif_play() {
  541. document.getElementById('demo_2').style.display = 'none';
  542. document.getElementById('demo_3').style.display = 'block';
  543.  
  544. }
  545. function registar() {
  546. document.getElementById('header_painel2').style.display = 'none';
  547. document.getElementById('painel_login').style.display = 'block';
  548. }
  549.  
  550. function login() {
  551. document.getElementById('painel_rank').style.display = 'none';
  552. document.getElementById('painel_instrucoes').style.display = 'none';
  553. document.getElementById('gerar_tab').style.display = 'none';
  554. document.getElementById('painel_jogo').style.display = 'none';
  555. document.getElementById('tabuleiro').style.display = 'none';
  556. document.getElementById('painel_init').style.display = 'none';
  557. document.getElementById('painel_login').style.display = 'block';
  558. }
  559. function login_wData() {
  560. document.getElementById('painel_login').style.display = 'none';
  561. document.getElementById('painel_init').style.display = 'block';
  562. }
  563. function config() {
  564. clearBoard();
  565. document.getElementById('painel_login').style.display = 'none';
  566. document.getElementById('painel_rank').style.display = 'none';
  567. document.getElementById('painel_init').style.display = 'none';
  568. document.getElementById('painel_instrucoes').style.display = 'none';
  569. document.getElementById('gerar_tab').style.display = 'none';
  570. document.getElementById('painel_jogo').style.display = 'block';
  571. document.getElementById('tabuleiro').style.display = 'none';
  572.  
  573. }
  574. function modo_jogo() {
  575. document.getElementById('gerar_tab').style.display = 'none';
  576. document.getElementById('modo_jogo').style.display = 'none';
  577. document.getElementById('demo').style.display = 'block';
  578. }
  579. function instrucoes() {
  580. document.getElementById('gerar_tab').style.display = 'none';
  581. document.getElementById('painel_jogo').style.display = 'none';
  582. document.getElementById('painel_login').style.display = 'none';
  583. document.getElementById('painel_init').style.display = 'none';
  584. document.getElementById('painel_rank').style.display = 'none';
  585. document.getElementById('painel_instrucoes').style.display = 'block';
  586.  
  587. }
  588. function rank() {
  589. document.getElementById('gerar_tab').style.display = 'none';
  590. document.getElementById('painel_jogo').style.display = 'none';
  591. document.getElementById('painel_login').style.display = 'none';
  592. document.getElementById('painel_init').style.display = 'none';
  593. document.getElementById('painel_instrucoes').style.display = 'none';
  594. document.getElementById('gerar_tab').style.display = 'none';
  595. clearBoard_rank();
  596. document.getElementById('painel_rank').style.display = 'block';
  597. gerar_tab2();
  598. document.getElementById('tabelaclassificacao').style.display = 'block';
  599.  
  600. }
  601.  
  602. function home() {
  603. clearBoard();
  604. document.getElementById('tabuleiro').style.display = 'none';
  605. document.getElementById('quitgame').style.display = 'none';
  606. document.getElementById('gerar_tab').style.display = 'none';
  607. document.getElementById('painel_jogo').style.display = 'none';
  608. document.getElementById('painel_instrucoes').style.display = 'none';
  609. document.getElementById('painel_login').style.display = 'none';
  610. document.getElementById('painel_rank').style.display = 'none';
  611. document.getElementById('painel_init').style.display = 'block';
  612. //document.getElementById('demo').style.display = 'block';
  613.  
  614. }
  615. function table_click() {
  616. var boardElement = document.getElementById("tabuleiro");
  617. alert(boardElement.rows[l].cells[c]);
  618. }
  619.  
  620. function try_again() {
  621. clearBoard();
  622. document.getElementById('try_again').style.display = 'none';
  623. document.getElementById('demo').style.display = 'block';
  624. }
  625. function playbutton(){
  626. document.getElementById('painel_login').style.display = 'none';
  627. document.getElementById('painel_rank').style.display = 'none';
  628. document.getElementById('painel_init').style.display = 'none';
  629. document.getElementById('painel_instrucoes').style.display = 'none';
  630. document.getElementById('gerar_tab').style.display = 'block';
  631. document.getElementById('painel_jogo').style.display = 'block';
  632. document.getElementById('tabuleiro').style.display = 'block';
  633. }
  634. function quitbutton(){
  635. document.getElementById('play').style.display = 'none';
  636. document.getElementById('quit').style.display = 'none';
  637. document.getElementById('painel_jogo').style.display = 'none';
  638. document.getElementById('gerar_tab').style.display = 'none';
  639. document.getElementById('tabuleiro').style.display = 'none';
  640. document.getElementById('quitgame').style.display = 'block';
  641. }
  642. function yes(){
  643. clearBoard();
  644. document.getElementById('tabuleiro').style.display = 'none';
  645. document.getElementById('quitgame').style.display = 'none';
  646. document.getElementById('painel_jogo').style.display = 'none';
  647. document.getElementById('painel_init').style.display = 'block';
  648. document.getElementById('demo').style.display = 'block';
  649.  
  650. }
  651. function quitfunction(){
  652. document.getElementById('play').style.display = 'inline-block';
  653. document.getElementById('quitgame').style.display = 'none';
  654. document.getElementById('quit').style.display = 'inline-block';
  655. document.getElementById('painel_jogo').style.display = 'block';
  656. document.getElementById('tabuleiro').style.display = 'block';
  657. document.getElementById('gerar_tab').style.display = 'block';
  658.  
  659. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement