Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Игра сапер на Javascript

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не могу сделать одну штуку
_Virus_
Отправлено: 21 Октября, 2012 - 11:54:40
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Делаю игру сапер на js
Вот как тут сделать так, чтобы, если вокруг поля нету бомб, то каждая из этих полей сама нажималась и проверяла вокруг себя поля и т.д. ?
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <title>123</title>
  5. <style>
  6. td{
  7.         background-color: red;
  8.         border-color: black;
  9.         border-width: 2px;
  10.         border-style: solid;
  11.         width: 30px;
  12.         height: 30px;
  13. }
  14. </style>
  15. </head>
  16. <body onload="javascript: cont()">
  17. <script>
  18. var bomb = new Array('s9x7k', 's5x4k', 's7x7k', 's5x3k', 's8x1k', 's5x2k', 's3x9k');
  19. var press_loc = new Array();
  20. function in_array(needle, haystack, strict){
  21.         var found = false, key, strict = !!strict;
  22.         for (key in haystack) {
  23.                 if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)){
  24.                         found = true;
  25.                         break;
  26.                 }
  27.         }
  28.         return found;
  29. }
  30. function press(s, k){
  31.         num_bomb = 0;
  32.         ex = "s"+s+"x"+k+"k";
  33.         if(!in_array(ex, press_loc)){
  34.                 if(in_array(ex, bomb)) for(i in bomb) eval(bomb[i]).style.backgroundColor = 'black';
  35.                 else{
  36.                         eval(ex).style.backgroundColor = 'white';
  37.                         press_loc.push(ex);
  38.                         for(sl=s-1;sl<s+2;sl++){
  39.                                 if(sl > 0 && sl < 11){
  40.                                         for(kl=k-1;kl<k+2;kl++){
  41.                                                 if(kl > 0 && kl < 11 && !in_array("s"+sl+"x"+kl+"k", press_loc) && (sl != s || kl != k)){
  42.                                                         if(in_array("s"+sl+"x"+kl+"k", bomb)) num_bomb++;
  43.                                                 }
  44.                                         }
  45.                                 }
  46.                         }
  47.                 }
  48.         }
  49.         if(num_bomb) eval(ex).innerHTML = num_bomb;
  50. }
  51. function cont(){
  52.         var arrr = [];
  53.         for(r=1;r<11;r++){
  54.                 var arrd = [];
  55.                 for(d=1;d<11;d++){
  56.                         arrd.push("<td onclick=\"javascript: press("+r+", "+d+");\" id=\"s"+r+"x"+d+"k\"></td>");
  57.                 }
  58.                 arrr.push("<tr>"+arrd.join('')+"</tr>");
  59.         }
  60.         con.innerHTML = arrr.join('');
  61. }
  62. </script>
  63. <table id="con">
  64. </table>
  65. </body>
  66. </html>
  67.  
 
 Top
_Virus_
Отправлено: 22 Октября, 2012 - 19:15:18
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Ну, программисты, где вы?
Тут надо сделать, чтобы функция press() в опредиленном цикле выполнялась
 
 Top
caballero
Отправлено: 22 Октября, 2012 - 19:49:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Ну, программисты, где вы?

там же где и ты. Если ты не хочешь думать головой то чего кто то другой вдруг захочет.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Alho
Отправлено: 22 Октября, 2012 - 20:21:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




 
 Top
Zuldek
Отправлено: 23 Октября, 2012 - 09:06:17
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Особенно нравится "и т.д.". Когда говорит такое заказчик или манагер в усном т.з. хочется набросится и задушить!
Вы разработчик! Вы пишите на форуме пост с описание работы программы и функций которые она должен выполнять!
Какое тут может быть "и т.д."?! За вас додумать что должна ваша игра делать что-ли?

Логика:

1. Получаете координаты/id конкретной ячейки (по клику)
2. По этим координатам определяете id-ки 8-ми соседних ячеек.
3. Проверяете "есть ли там мины".
4. Если нет - раскрываете, нажимаете, "и т.д.".

Все элементарно.

(Отредактировано автором: 23 Октября, 2012 - 09:07:58)

 
 Top
_Virus_
Отправлено: 23 Октября, 2012 - 21:22:09
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Вот сделал так!
Если 8 соседних ячеек пусты, то каждая ячейка добавляется в массив.И через цикл for поотдельности нажимается. Только почемуто не все ячейки открываются, гдето происходит конфликт. Почему так?

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <style>
  3. td{
  4.         background-color: red;
  5.         border-color: black;
  6.         border-width: 2px;
  7.         border-style: solid;
  8.         width: 30px;
  9.         height: 30px;
  10. }
  11. </style>
  12. <table id="con">
  13. </table>
  14. <script>
  15. var bomb = new Array('s9x7k', 's5x4k', 's7x7k', 's5x3k', 's8x1k', 's5x2k', 's3x9k');
  16. var press_loc = new Array();
  17. function in_array(needle, haystack, strict){
  18.         var found = false, key, strict = !!strict;
  19.         for (key in haystack) {
  20.                 if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)){
  21.                         found = true;
  22.                         break;
  23.                 }
  24.         }
  25.         return found;
  26. }
  27. function press(s, k){
  28.         ex = "s"+s+"x"+k+"k", num_bomb = 0, p = 0, ps = [], pk = [];
  29.         if(!in_array(ex, press_loc)){
  30.                 if(in_array(ex, bomb)) for(i in bomb) eval(bomb[i]).style.backgroundColor = 'black';
  31.                 else{
  32.                         press_loc.push(ex);
  33.                         eval(ex).style.backgroundColor = 'white';
  34.                         for(sl=s-1;sl<s+2;sl++){
  35.                                 if(sl > 0 && sl < 11){
  36.                                         for(kl=k-1;kl<k+2;kl++){
  37.                                                 if(kl > 0 && kl < 11 && !in_array("s"+sl+"x"+kl+"k", press_loc) && (sl != s || kl != k)){
  38.                                                         if(in_array("s"+sl+"x"+kl+"k", bomb)) num_bomb++;
  39.                                                         else ps[p] = sl, pk[p] = kl, p++
  40.                                                 }
  41.                                         }
  42.                                 }
  43.                         }
  44.                 }
  45.         }
  46.         if(num_bomb) eval(ex).innerHTML = num_bomb;
  47.         else if(p) for(p in ps) press(ps[p], pk[p]);
  48. }
  49. function cont(){
  50.         var arrr = [];
  51.         for(r=1;r<11;r++){
  52.                 var arrd = [];
  53.                 for(d=1;d<11;d++) arrd.push("<td onclick=\"javascript: press("+r+", "+d+");\" id=\"s"+r+"x"+d+"k\"></td>");
  54.                 arrr.push("<tr>"+arrd.join('')+"</tr>");
  55.         }
  56.         con.innerHTML = arrr.join('');
  57. }
  58. cont();
  59. </script>
  60.  

(Добавление)
Alho пишет:
http://tmaplatform.ru/vinx_home_page/miner/miner.html


За это спасибо, но охото с нуля сделать, опыта набраться Улыбка

(Отредактировано автором: 23 Октября, 2012 - 21:50:27)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB