Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Tablica - działa tylko ostatni element
Glarden
post 8.05.2008, 14:19:03
Post #1





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


Joł, joł. Robię w JS grę w pokera. Skrypt wygląda na razie tak:
  1. karty = new Array();
  2. karty[0] = 'as_pik';
  3. karty[1] = 'as_trefl';
  4. karty[2] = 'as_karo';
  5. karty[3] = 'as_kier';
  6.  
  7. karty[4] = 'krol_pik';
  8. karty[5] = 'krol_trefl';
  9. karty[6] = 'krol_karo';
  10. karty[7] = 'krol_kier';
  11.  
  12. karty[8] = 'dama_pik';
  13. karty[9] = 'dama_trefl';
  14. karty[10] = 'dama_karo';
  15. karty[11] = 'dama_kier';
  16.  
  17. karty[12] = 'jop_pik';
  18. karty[13] = 'jop_trefl';
  19. karty[14] = 'jop_karo';
  20. karty[15] = 'jop_kier';
  21.  
  22. karty[16] = '10_pik';
  23. karty[17] = '10_trefl';
  24. karty[18] = '10_karo';
  25. karty[19] = '10_kier';
  26.  
  27. karty[20] = '9_pik';
  28. karty[21] = '9_trefl';
  29. karty[22] = '9_karo';
  30. karty[23] = '9_kier';
  31.  
  32. function rozdaj() {
  33. for (i=0;i<5;i++) {
  34. karta = Math.floor(Math.random() * 23) +1;
  35. karty_gracz = new Array();
  36. karty_gracz[i] = karty[karta];
  37. karty.splice(karta, 1);
  38. }
  39. pokaz_karty();
  40. }
  41. function pokaz_karty() {
  42. for (i=0;i<5;i++) {
  43. document.getElementById("karty").innerHTML += "<br>"+karty_gracz[i];
  44. }
  45. }
  46.  
  47. <body onLoad="rozdaj();">
  48.  
  49. <div id="licznik">
  50. Kasa: 1000
  51. </div>
  52. <a href="javascript:wchodze();">Wchodzę</a><br>
  53.  
  54. <div id="karty">
  55. </div>
  56.  
  57. </body>


Przy włączeniu strony, uruchamiana jest funkcja rozdająca karty użytkownikowi (rozdaj()winksmiley.jpg. I teraz problem jest taki, że kiedy wyświetla te karty (funkcją pokaz_karty()winksmiley.jpg zamiast pierwszych czterech kart pokazuje "undefined", natomiast piąta działa w 80% (tak na oko) przypadków, w pozostałych też jest "undefined". I zwracam się do Was z pytaniem: co się dzieje się?

Ten post edytował Glarden 8.05.2008, 14:21:15


--------------------
Raz, dwa, trzy, baba Jaga patrzy!
http://trelemorele.cba.pl
Go to the top of the page
+Quote Post
lord_t
post 8.05.2008, 15:11:51
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Kod
function rozdaj() {
karty_gracz = new Array();
for (i=0;i<5;i++) {
karta = Math.floor(Math.random() * karty.length-1) +1;alert(karta);
karty_gracz[i] = karty[karta];
karty.splice(karta, 1);
}
pokaz_karty();
}

Za każdym krokiem w pętli tworzyłeś nową tablicę (z jednym elementem) nadpisując poprzednią.

Drugi błąd: cały czas losowałeś z przedziału 0-23 a za każdym krokiem w pętli usuwałeś jeden element.


--------------------
Go to the top of the page
+Quote Post
phpion
post 8.05.2008, 15:19:14
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Moim zdaniem są tutaj 2 problemy.
1) Jak zauważył ~lord_t: za każdym razem zerowałeś tablicę karty_gracz. To jednak nie ma wpływu na Twój problem - wyszłoby później.
2) Musisz zdefiniować tablicę karty_gracz jako globalną czyli poza ciałem funkcji rozdaj. Dlaczego? Aktualnie tablica ta jest tylko lokalną tablicą dla tej funkcji i nie jest widoczna poza nią. Zadeklaruj karty_gracz poza funkcją.

Finalnie powinno to wyglądać tak:
  1. karty_gracz = new Array(); // <- pojawila sie deklaracja tablicy jako globalnej
  2.  
  3. karty = new Array();
  4. karty[0] = 'as_pik';
  5. karty[1] = 'as_trefl';
  6. karty[2] = 'as_karo';
  7. karty[3] = 'as_kier';
  8.  
  9. karty[4] = 'krol_pik';
  10. karty[5] = 'krol_trefl';
  11. karty[6] = 'krol_karo';
  12. karty[7] = 'krol_kier';
  13.  
  14. karty[8] = 'dama_pik';
  15. karty[9] = 'dama_trefl';
  16. karty[10] = 'dama_karo';
  17. karty[11] = 'dama_kier';
  18.  
  19. karty[12] = 'jop_pik';
  20. karty[13] = 'jop_trefl';
  21. karty[14] = 'jop_karo';
  22. karty[15] = 'jop_kier';
  23.  
  24. karty[16] = '10_pik';
  25. karty[17] = '10_trefl';
  26. karty[18] = '10_karo';
  27. karty[19] = '10_kier';
  28.  
  29. karty[20] = '9_pik';
  30. karty[21] = '9_trefl';
  31. karty[22] = '9_karo';
  32. karty[23] = '9_kier';
  33.  
  34. function rozdaj() {
  35. karty_gracz = new Array(); // <- pojawilo sie zerowanie tablicy
  36.  
  37. for (i=0;i<5;i++) {
  38. karta = Math.floor(Math.random() * 23) +1;
  39. // karty_gracz = new Array(); <- tego tu nie ma
  40. karty_gracz[i] = karty[karta];
  41. karty.splice(karta, 1);
  42. }
  43. pokaz_karty();
  44. }
  45. function pokaz_karty() {
  46. for (i=0;i<5;i++) {
  47. document.getElementById("karty").innerHTML += "<br>"+karty_gracz[i];
  48. }
  49. }
  50.  
  51. <body onLoad="rozdaj();">
  52.  
  53. <div id="licznik">
  54. Kasa: 1000
  55. </div>
  56. <a href="javascript:wchodze();">Wchodzę</a><br>
  57.  
  58. <div id="karty">
  59. </div>
  60.  
  61. </body>


PS: nie testowałem ale wydaje mi się, że powinno pomóc.

Ten post edytował phpion 8.05.2008, 15:20:21
Go to the top of the page
+Quote Post
Glarden
post 8.05.2008, 16:06:49
Post #4





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


Prawie działa, jeszcze tylko jeden problem. Wspomniałem wcześniej, że raz na jakiś czas nawet ta ostatnia karta, działająca już w moim skrypcie, czasem jest "undefined". Teraz jest tak z wszystkimi kartami - w większości przypadków działa fajnie, ale czasem jedna z kart jest niezdefiniowana...


--------------------
Raz, dwa, trzy, baba Jaga patrzy!
http://trelemorele.cba.pl
Go to the top of the page
+Quote Post
lord_t
post 8.05.2008, 16:58:14
Post #5





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


To przeczytaj mojego posta wyżej. :|


--------------------
Go to the top of the page
+Quote Post
Glarden
post 8.05.2008, 21:17:52
Post #6





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


O kurde, ale ja głupi jestem. Przepraszam i dziękuję za pomoc!


--------------------
Raz, dwa, trzy, baba Jaga patrzy!
http://trelemorele.cba.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 09:28