Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.88 KB | None | 0 0
  1. var flag = 0; // 1 PC & 0 User
  2. var size = 0;
  3. var tam = size;
  4. var nim = 0;
  5. var wait=1;
  6. var turn = 1;
  7. //var stack = 0;
  8. var pieces = 0;
  9. var game_ash;
  10. var game; //variavel que guarda a ash do jogo
  11.  
  12. ////////////////////////
  13. var vez = 0;
  14. var username = "";
  15. var password = "";
  16. var online = 0;
  17.  
  18. function register(){
  19.  
  20.  
  21. var name = document.getElementById("user").value;
  22. var pass = document.getElementById("pass").value;
  23.  
  24. if(checkLogin()){
  25.  
  26. var xhr = new XMLHttpRequest();
  27.  
  28. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/register",true);
  29. xhr.onreadystatechange = function() {
  30. if(xhr.readyState < 4)
  31. return;
  32. if(xhr.status == 200){ //faz login
  33. var resposta = JSON.parse(xhr.responseText);
  34.  
  35.  
  36. username = name;
  37. password = pass;
  38.  
  39. document.getElementById('painel_login').style.display = 'none';
  40. document.getElementById('jogo_on').style.display = 'none';
  41. document.getElementById('painel_jogo').style.display = 'block';
  42.  
  43.  
  44. }
  45. else{
  46. alert("Password errada!");
  47. document.getElementById("my_login").reset();
  48. }
  49.  
  50. }
  51. xhr.send(JSON.stringify({"nick": name,"pass": pass}));
  52. }
  53. else{
  54. document.getElementById("my_login").reset();
  55.  
  56. }
  57.  
  58. }
  59. function checkLogin()
  60. {
  61. var nameRegex = /^[a-zA-Z0-9\_]+$/;
  62. var username_teste = document.getElementById('user').value;
  63. var password_teste= document.getElementById('pass').value;
  64. var match = document.getElementById('user').value.match(nameRegex);
  65.  
  66. if(username_teste.length === 0)
  67. {
  68. alert("Your username is empty!");
  69. return false;
  70. }
  71.  
  72. if(match === null)
  73. {
  74. alert("Your username is not valid. Only characters A-Z, a-z and '_' are acceptable.");
  75. return false;
  76. }
  77.  
  78. if(username_teste.length > 15)
  79. {
  80. alert("You have more than 15 characters on username!");
  81. return false;
  82. }
  83.  
  84. if(password_teste.length === 0)
  85. {
  86. alert("Your password is empty!");
  87. return false;
  88. }
  89.  
  90. if(password_teste.length < 4)
  91. {
  92. alert("Your password is too small!");
  93. return false;
  94. }
  95.  
  96. document.getElementById('user').innerHTML = username_teste;
  97. return true;
  98. }
  99.  
  100. function join(){
  101.  
  102. console.log("pass join: " + password);
  103. var group = "19";
  104. /* var name = document.getElementById("user").value;
  105. var pass = document.getElementById("pass").value;
  106.  
  107. É a password e username definidos globalmente!!
  108.  
  109. */
  110.  
  111.  
  112.  
  113. size = "5";
  114.  
  115. var xhr = new XMLHttpRequest();
  116.  
  117. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/join",true);
  118. xhr.onreadystatechange = function() {
  119. if(xhr.readyState < 4)
  120. return;
  121. if(xhr.status == 200){
  122. game_ash = JSON.parse(xhr.responseText);
  123. game=game_ash.game;
  124. update(name);
  125. online = 1; // <- NO LEAVE E QUANDO ACABA O JOGO TENS DE POR A 0 (ZERO FDP) OH BURRO DO CARALHO
  126.  
  127.  
  128. // miguel paneleiro é aqui que faço update?
  129. // SIM CABRÃO!
  130. /*
  131.  
  132. aqui vais ter de fazer o seguinte: (cria função que é melhor)!
  133.  
  134. tens de meter um botão para ele poder fazer o leave (mas isto fazes depois de teres o update feito)
  135. apagas tudo do painel do utilizador!
  136. a caixa para ele escolher o tamanho do tabuleiro e o botão play DESAPARECEM!
  137.  
  138. No final desta função o user vai ficar à espera. (E PONTO!)
  139. ATÉ RECEBER UMA RESPOSTA DO UPDATE!
  140.  
  141. logo crias uma flag global para que é saberes se o jogador está ou não à espera (espera = 1;)
  142.  
  143. Daqui fica resolvido se fizeres isto que eu disse!
  144.  
  145. */
  146. wait =1;
  147.  
  148.  
  149.  
  150. }
  151.  
  152. }
  153. xhr.send(JSON.stringify({"group": group,"nick": username,"pass": password, "size": size}));
  154.  
  155.  
  156. }
  157.  
  158. function update(name){ // MARAvilha que ele aqui já junta o tabuleiro
  159. console.log("UP" + "DATE !!!");
  160. var xhr = new XMLHttpRequest();
  161. console.log("name :" + username + "\nash " + game + "\ngame " +game);
  162.  
  163. xhr.open("GET",'http://twserver.alunos.dcc.fc.up.pt:8008/update?nick='+username + '&game='+ game, true);
  164. //alert("update");
  165. var flag=0;
  166. var eventSource = new EventSource('http://twserver.alunos.dcc.fc.up.pt:8008/update?'+'nick=' + username + '&game='+ game);
  167. eventSource.onmessage = function(event) {
  168. evdata = JSON.parse(event.data);
  169.  
  170. //if(evdata.winner == null )
  171. //{alert("winner")}
  172. if(evdata.turn != null )
  173. {
  174.  
  175. console.log("quem é a jogar: " + evdata.turn);
  176. console.log("rack: " + evdata.rack);
  177.  
  178. /*
  179. AQUI É QUE COMANDA O JOGO
  180.  
  181. Se a flag esepera == 1
  182. metes a 0;
  183. metes a aparecer o tabuleiro!
  184. AO METERES A APARECER O TABULEIRO, LÁ DENTRO NA FUNÇÃO QUE DEIXAR O USER JOGAR/CLICAR NO TABULEIRO
  185. CRIA OUTRA FLAG GLOBAL QUE SÓ PODE CLICAR SE FOR A VEZ DELE (vez==1)
  186.  
  187. Se o tunr == nome do user
  188. vez = 1
  189. SENAÕ
  190. vez = 0
  191.  
  192. AINDA TENS DE TRATAR DO RACK
  193. cria uma função onde mandas o rack e altera o tabuleiro!
  194.  
  195.  
  196.  
  197.  
  198. */
  199.  
  200.  
  201. if(evdata.turn === username) { vez = 1; }
  202. else { vez = 0; }
  203.  
  204. if(wait==1){
  205. wait=0;
  206. gerar_tab_on(evdata.rack);
  207. }
  208.  
  209.  
  210. /*
  211. TRATAR DO RACK!
  212. */
  213. }
  214.  
  215. }
  216. }
  217.  
  218. function notify(stack,pieces){
  219. console.log("NOTIFY !!! e game " + game + "pieces e stack" + pieces + stack);
  220. //pieces é o numero de peças que tem numa coluna
  221. //stack coluna onde jogou
  222. /* var name = document.getElementById("user").value;
  223. var pass = document.getElementById("pass").value;
  224.  
  225. ESTÀ DEFINIDO GLOBALMENTE
  226.  
  227. */
  228. //var game = game_ash.game;
  229. var stack = stack;
  230. var pieces = pieces;
  231.  
  232. var xhr = new XMLHttpRequest();
  233.  
  234.  
  235. xhr.open("POST","http://twserver.alunos.dcc.fc.up.pt:8008/notify",true);
  236. xhr.onreadystatechange = function() {
  237. if(xhr.readyState < 4)
  238. return;
  239. if(xhr.status == 200){
  240. var notify = JSON.parse(xhr.responseText);
  241. console.log("peças - " + notify.pieces + "stack - " + notify.stack);
  242. }
  243. }
  244. xhr.send(JSON.stringify({"nick": username,"pass":password,"game": game, "stack": stack,"pieces":pieces}));
  245.  
  246.  
  247. /*
  248.  
  249. SUPONDO QUE ESTA FUNÇÃO ESTÁ A FUNCIONAR!
  250. AQUI NÃO FAZES MAIS NADA!
  251. SÓ VOU EXPLICAR O QUE TENS QUE FAZER AQUI PORQUE NÃO SEI ONDE TENS AS MERDAS!
  252.  
  253. Quando o jogador CLICA NO TABULEIRO, for uma jogada válida e ser a vez dede, é que chamas o notify!
  254.  
  255.  
  256. ENTENDESTE OH SEU BURRO!?
  257. MARAvilha MARAvilha! TODO CONTENTE! DIARIAMENTE!
  258. */
  259. }
  260.  
  261.  
  262. function gerar_tab_on(rack){
  263.  
  264.  
  265. document.getElementById('jogo_on').style.display = 'none';
  266.  
  267. document.getElementById('tabuleiro').style.display = 'block';
  268. document.getElementById('gerar_tab').style.display = 'block';
  269.  
  270. document.getElementById('play').style.display = 'inline-block';
  271. document.getElementById('quit').style.display = 'inline-block';
  272.  
  273. nim = size * size;
  274. var table = document.getElementById('tableclass');
  275.  
  276.  
  277.  
  278. for (var i = 0; i < rack.length; i++) {
  279. var row = table.insertRow();
  280. row.classList.add('tr');
  281.  
  282. for (var j = 0; j < rack[i]; j++) {
  283. var td = row.insertCell();
  284. td.classList.add('td');
  285. if(vez==1){
  286. cell_onclick_on(rack.length,td,i+1, j);
  287.  
  288. }
  289.  
  290. }
  291. }
  292.  
  293.  
  294. //nao conseguimos apagar para depois usar o rack
  295. /*for(var i=size;i>=1;i--){
  296. var row = table.deleteCell();
  297. for(var j=tam+1-i;j<=size;j++){
  298. var td = row.deleteCell();
  299. td.classList.remove(0);
  300.  
  301.  
  302. }
  303. }*/
  304.  
  305.  
  306. //clearBoard();
  307.  
  308. }
  309.  
  310.  
  311. function cell_onclick_on(size,cell, pieces, stack) {
  312. l=size-pieces;
  313. c=stack;
  314. cell.onclick = function() {
  315. if (cell.className == "td") {
  316. for (var i = l; i >= 0; i--) {
  317. var cell_vizinha = getCell(i, stack);
  318. if (cell_vizinha.className == "inactive")
  319. break;
  320.  
  321. cell_vizinha.className = "inactive";
  322. notify(stack,pieces);
  323. nim--;
  324.  
  325. }
  326. // nim = nim - (l + 1);
  327.  
  328. }
  329.  
  330.  
  331. }
  332.  
  333.  
  334. /*cell.onmouseover = function() {
  335. if (cell.className !== "inactive" && cell.className !== "temporario")
  336. for (var i = l - 1; i >= 0; i--) {
  337. var cell_vizinha = getCell(i, c);
  338. if (cell_vizinha.className == "inactive"
  339. || cell_vizinha.className == "temporario")
  340. break;
  341. cell_vizinha.className = "active";
  342. }
  343. }
  344.  
  345. cell.onmouseout = function() {
  346.  
  347. if (cell.className !== "inactive" && cell.className !== "temporario")
  348. for (var i = l; i >= 0; i--) {
  349. var cell_vizinha = getCell(i, c);
  350. if (cell_vizinha.className == "inactive"
  351. || cell_vizinha.className == "temporario")
  352. break;
  353. cell_vizinha.className = "td";
  354. }
  355. }*/
  356.  
  357.  
  358. }
  359. function cell_onclick(cell, l, c) {
  360.  
  361. cell.onclick = function() {
  362. if (flag == 0 && cell.className == "td") {
  363. for (var i = l; i >= 0; i--) {
  364. var cell_vizinha = getCell(i, c);
  365. if (cell_vizinha.className == "inactive")
  366. break;
  367.  
  368. cell_vizinha.className = "inactive";
  369. notify(stack,pieces);
  370. nim--;
  371.  
  372. }
  373. // nim = nim - (l + 1);
  374.  
  375. }
  376.  
  377.  
  378. }
  379.  
  380.  
  381. cell.onmouseover = function() {
  382. if (cell.className !== "inactive" && cell.className !== "temporario")
  383. for (var i = l - 1; i >= 0; i--) {
  384. var cell_vizinha = getCell(i, c);
  385. if (cell_vizinha.className == "inactive"
  386. || cell_vizinha.className == "temporario")
  387. break;
  388. cell_vizinha.className = "active";
  389. }
  390. }
  391.  
  392. cell.onmouseout = function() {
  393. if (cell.className !== "inactive" && cell.className !== "temporario")
  394. for (var i = l; i >= 0; 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 = "td";
  400. }
  401. }
  402.  
  403.  
  404. }
  405.  
  406.  
  407. function gerar_tab(tamanho) {
  408. document.getElementById('jogo_on').style.display = 'none';
  409.  
  410. document.getElementById('tabuleiro').style.display = 'block';
  411. document.getElementById('gerar_tab').style.display = 'block';
  412.  
  413. document.getElementById('play').style.display = 'inline-block';
  414. document.getElementById('quit').style.display = 'inline-block';
  415. tam=tamanho;
  416. nim = tam * tam;
  417. console.log("NIM " + nim + "TAM " + tam);
  418. var table = document.getElementById('tableclass');
  419. console.log("= " + tam);
  420. for (var i = 0; i < tam; i++) {
  421. var row = table.insertRow();
  422. row.classList.add('tr');
  423.  
  424. for (var j = 0; j < tam; j++) {
  425. var td = row.insertCell();
  426. td.classList.add('td');
  427. cell_onclick(td, i, j);
  428. }
  429. }
  430.  
  431.  
  432. if (flag != 0)
  433. setTimeout(pc_play, 100);
  434.  
  435. }
  436.  
  437. function gerar_tab2() {
  438. var table = document.getElementById('tabelaclassificacao');
  439.  
  440. for (var i = 0; i < 11 ;i++) {
  441. var row = table.insertRow();
  442. row.classList.add('tr_1');
  443.  
  444. for (var j = 0; j < 2 ;j++) {
  445. var td = row.insertCell();
  446. td.classList.add('td_1');
  447.  
  448. }
  449. }
  450. var n = "Nome";
  451. var t = "Tempo";
  452. document.getElementById("tabelaclassificacao").rows[0].cells[0].innerHTML = n;
  453. document.getElementById("tabelaclassificacao").rows[0].cells[1].innerHTML = t;
  454.  
  455.  
  456. for ( i = 1; i <= 10 ;i++) {
  457. var player_class = i + 'º -------------- ';
  458. var player_time = "-- / -- / --";
  459. console.log(player_class);
  460. document.getElementById("tabelaclassificacao").rows[i].cells[0].innerHTML = player_class;
  461. document.getElementById("tabelaclassificacao").rows[i].cells[1].innerHTML = player_time;
  462.  
  463. }
  464.  
  465. }
  466.  
  467.  
  468. function getCell(l, c) {
  469. var boardElement = document.getElementById("tableclass");
  470. return boardElement.rows[l].cells[c];
  471. }
  472.  
  473. function pc_play() {
  474. document.getElementById('demo_3').style.display = 'none';
  475.  
  476. var x, y;
  477. var cell;
  478. // alert(nim);
  479.  
  480. if (nim <= 0)
  481. return;
  482.  
  483. do {
  484. x = Math.floor((Math.random() * tam));
  485. y = Math.floor((Math.random() * tam));
  486. // console.log(x + " " + y + " " + tam);
  487. } while (getCell(x, y).className != "td");
  488.  
  489. for (var i = x; i >= 0; i--) {
  490. var cell_vizinha = getCell(i, y);
  491. if (cell_vizinha.className == "inactive")
  492. break;
  493. cell_vizinha.className = "temporario";
  494.  
  495. }
  496.  
  497. setTimeout(function() {
  498. for (var i = x; i >= 0; i--) {
  499. var cell_vizinha = getCell(i, y);
  500. if (cell_vizinha.className == "inactive")
  501. break;
  502. cell_vizinha.className = "inactive";
  503. nim--;
  504.  
  505. }
  506. winner();
  507.  
  508. flag = 0;
  509. }, 1000);
  510. }
  511.  
  512. function winner() {
  513. if (nim <= 0) {
  514. if (flag == 0) {
  515. alert("Parabéns, ganhaste!");
  516.  
  517. } else {
  518. alert("Perdeste, tente de novo!");
  519.  
  520. }
  521.  
  522. document.getElementById('tabuleiro').style.display = 'none';
  523. document.getElementById('gerar_tab').style.display = 'none';
  524. // document.getElementById('myFunction').style.display = 'none';
  525. document.getElementById('quit').style.display = 'none';
  526. document.getElementById('play').style.display = 'none';
  527. document.getElementById('try_again').style.display = 'block';
  528.  
  529. return;
  530. }
  531. }
  532.  
  533.  
  534. function clearBoard() {
  535.  
  536. var i;
  537. for (i = 0; i < tam; i++) {
  538. if (document.getElementById("tableclass").rows.length != 0)
  539. document.getElementById("tableclass").deleteRow(0);
  540. }
  541. }
  542. function clearBoard_rank() {
  543.  
  544. var i;
  545. for (i = 0; i < 10; i++) {
  546. if (document.getElementById("tabelaclassificacao").rows.length != 0)
  547. document.getElementById("tabelaclassificacao").deleteRow(0);
  548.  
  549. }
  550. }
  551.  
  552. function myFunction(flag) {
  553. var x, text;
  554. flag=1;
  555. x = document.getElementById("numb").value;
  556. document.getElementById('demo_3').style.display = 'none';
  557. tam = x;
  558. //clearBoard();
  559. gerar_tab(x);
  560. }
  561.  
  562. function first_play() {
  563. document.getElementById('demo').style.display = 'none';
  564. document.getElementById('demo_2').style.display = 'block';
  565.  
  566. flag = 0// user
  567.  
  568. }
  569. function first_play_pc() {
  570. document.getElementById('demo').style.display = 'none';
  571. document.getElementById('demo_2').style.display = 'block';
  572.  
  573. flag = 1; // pc
  574.  
  575. }
  576.  
  577. function dif_play() {
  578. document.getElementById('demo_2').style.display = 'none';
  579. document.getElementById('demo_3').style.display = 'block';
  580.  
  581. }
  582. function registar() {
  583. document.getElementById('header_painel2').style.display = 'none';
  584. document.getElementById('painel_login').style.display = 'block';
  585. }
  586.  
  587. function login() {
  588. document.getElementById('painel_rank').style.display = 'none';
  589. document.getElementById('painel_instrucoes').style.display = 'none';
  590. document.getElementById('gerar_tab').style.display = 'none';
  591. document.getElementById('painel_jogo').style.display = 'none';
  592. document.getElementById('tabuleiro').style.display = 'none';
  593. document.getElementById('painel_init').style.display = 'none';
  594. document.getElementById('painel_login').style.display = 'block';
  595. }
  596. function login_wData() {
  597. document.getElementById('painel_login').style.display = 'none';
  598. document.getElementById('painel_init').style.display = 'block';
  599. }
  600. function config() {
  601. clearBoard();
  602. document.getElementById('painel_login').style.display = 'none';
  603. document.getElementById('painel_rank').style.display = 'none';
  604. document.getElementById('painel_init').style.display = 'none';
  605. document.getElementById('painel_instrucoes').style.display = 'none';
  606. document.getElementById('gerar_tab').style.display = 'none';
  607. document.getElementById('painel_jogo').style.display = 'block';
  608. document.getElementById('tabuleiro').style.display = 'none';
  609.  
  610. }
  611. function modo_jogo() {
  612. document.getElementById('gerar_tab').style.display = 'none';
  613. document.getElementById('modo_jogo').style.display = 'none';
  614. document.getElementById('jogo_on').style.display = 'none';
  615.  
  616. document.getElementById('demo').style.display = 'block';
  617. }
  618. function modo_online_jogo() {
  619. document.getElementById('modo_jogo').style.display = 'none';
  620.  
  621. document.getElementById('jogo_on').style.display = 'block';
  622. //join();
  623.  
  624. }
  625. function instrucoes() {
  626. document.getElementById('gerar_tab').style.display = 'none';
  627. document.getElementById('painel_jogo').style.display = 'none';
  628. document.getElementById('painel_login').style.display = 'none';
  629. document.getElementById('painel_init').style.display = 'none';
  630. document.getElementById('painel_rank').style.display = 'none';
  631. document.getElementById('painel_instrucoes').style.display = 'block';
  632.  
  633. }
  634. function rank() {
  635. document.getElementById('gerar_tab').style.display = 'none';
  636. document.getElementById('painel_jogo').style.display = 'none';
  637. document.getElementById('painel_login').style.display = 'none';
  638. document.getElementById('painel_init').style.display = 'none';
  639. document.getElementById('painel_instrucoes').style.display = 'none';
  640. document.getElementById('gerar_tab').style.display = 'none';
  641. clearBoard_rank();
  642. document.getElementById('painel_rank').style.display = 'block';
  643. gerar_tab2();
  644. document.getElementById('tabelaclassificacao').style.display = 'block';
  645.  
  646. }
  647.  
  648. function home() {
  649. clearBoard();
  650. document.getElementById('tabuleiro').style.display = 'none';
  651. document.getElementById('quitgame').style.display = 'none';
  652. document.getElementById('gerar_tab').style.display = 'none';
  653. document.getElementById('painel_jogo').style.display = 'none';
  654. document.getElementById('painel_instrucoes').style.display = 'none';
  655. document.getElementById('painel_login').style.display = 'none';
  656. document.getElementById('painel_rank').style.display = 'none';
  657. document.getElementById('painel_init').style.display = 'block';
  658. //document.getElementById('demo').style.display = 'block';
  659.  
  660. }
  661. function table_click() {
  662. var boardElement = document.getElementById("tabuleiro");
  663. alert(boardElement.rows[l].cells[c]);
  664. }
  665.  
  666. function try_again() {
  667. clearBoard();
  668. document.getElementById('try_again').style.display = 'none';
  669. document.getElementById('demo').style.display = 'block';
  670. }
  671. function playbutton(){
  672. document.getElementById('painel_login').style.display = 'none';
  673. document.getElementById('painel_rank').style.display = 'none';
  674. document.getElementById('painel_init').style.display = 'none';
  675. document.getElementById('painel_instrucoes').style.display = 'none';
  676. document.getElementById('gerar_tab').style.display = 'block';
  677. document.getElementById('painel_jogo').style.display = 'block';
  678. document.getElementById('tabuleiro').style.display = 'block';
  679. }
  680. function quitbutton(){
  681. document.getElementById('play').style.display = 'none';
  682. document.getElementById('quit').style.display = 'none';
  683. document.getElementById('painel_jogo').style.display = 'none';
  684. document.getElementById('gerar_tab').style.display = 'none';
  685. document.getElementById('tabuleiro').style.display = 'none';
  686. document.getElementById('quitgame').style.display = 'block';
  687. }
  688. function yes(){
  689. clearBoard();
  690. document.getElementById('tabuleiro').style.display = 'none';
  691. document.getElementById('quitgame').style.display = 'none';
  692. document.getElementById('painel_jogo').style.display = 'none';
  693. document.getElementById('painel_init').style.display = 'block';
  694. document.getElementById('demo').style.display = 'block';
  695.  
  696. }
  697. function quitfunction(){
  698. document.getElementById('play').style.display = 'block';
  699. document.getElementById('quitgame').style.display = 'none';
  700. document.getElementById('quit').style.display = 'block';
  701. document.getElementById('painel_jogo').style.display = 'block';
  702. document.getElementById('tabuleiro').style.display = 'block';
  703. document.getElementById('gerar_tab').style.display = 'block';
  704.  
  705. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement