Игра "Морской Бой" - Prolog

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Мне необходимо написать игру Морской Бой с использованием dll, написанного на прологе. На текущем этапе я сделал генерацию кораблей компьютера и перешел к ходу машины. Есть следующий код:
Листинг программы
  1. global database - userDB
  2. u_ship(int, int, int, int, int). %Корабли пользователя
  3. global predicates
  4. procedure geter_shot(int, int, int) - (o, o, o) language stdcall .%õîä êîìïГ*.
  5. %%%
  6. %генерим выстрел
  7. geter_shot(X,Y,K):-get_rand(X),get_rand(Y),shot_comp(X,Y,K),!.
  8. geter_shot(X,Y,K):-geter_shot(X,Y,K).
  9.  
  10. %определяем попадание
  11. shot_comp(X,Y,K):-u_ship(T, Y, N, 1, _), T<=X, X<=T+N-1,u_dec_hp(T,Y,K),!.
  12. shot_comp(X,Y,K):-u_ship(X, T, N, -1, _), T<=Y, Y<=T+N-1,u_dec_hp(X,T,K),!.
  13. shot_comp(X,Y,0).
  14. %уменьшаем ХП корабля при попадании
  15. u_dec_hp(X,Y,1):-u_ship(X, Y, N, R, T), T-1>0, retract(u_ship(X,Y,_,_,_),userDB) , K=T-1, assertz(u_ship(X,Y,N,R,K),userDB),!.
  16. u_dec_hp(X,Y,2):-retract(u_ship(X, Y, N, R, _),userDB), assertz(u_ship(X,Y,N,R,0),userDB),!.
  17.  
  18. %получаем случайное число
  19. get_rand(F):-random(10,B),!,F=B.
  20. get_rand(F):-get_rand(F).
Это фрагмент кода, есть еще база выстрелов, база кораблей компа, есть генерация кораблей. Причем генерация по рандому, используя get_rand. Проблема в том, что когда я запускаю программу, выстрелы генерируются не совсем по рандому, а через один. причем через 1 и по горизонтали и по вертикали. Отдельно функцию рандома проверил - работает. А вот с остальной частью кода не работает.

Решение задачи: «Игра "Морской Бой"»

textual
Листинг программы
  1.   get_rand2(F):-random(51,B),!,B<10,F=B.
  2.   get_rand2(F):-get_rand2(F).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут