[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
AI - Искуственный интелект
BVOGДата: Вторник, 10.11.2009, 12:49 | Сообщение # 1
Полковник
Группа: Проверенные
Сообщений: 184
Награды: 0
Репутация: 4
Статус: Offline
AI - Лучше делать, я так думаю, с помощью одного task, если много то будет намного сложнее.
По идее сначала надо создать два класса player и bot. А вы как считаете?


Skype: thebvog
 
SlavikДата: Вторник, 10.11.2009, 12:54 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
Мне тоже так кажется.
Я примерно набрасал код:
Code

class bot():
  def __init__(self):
   self.health = 100
   self.speed = 100
   ...
   taskMgr.add(AI,"AI")
  def AI(self, task):
   if ...
 
ninthДата: Четверг, 12.11.2009, 08:37 | Сообщение # 3
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Если для каждого бота вешать свой таск в менеджер (как в примере славика), то при удалении бота (например в случае смерти или загрузки другого уровня) надо будет позаботиться об очистке менеджера от задачи оставшейся после бота. Такой подход имеет смысл, если у каждого бота свой тип поведения. Если же у ботов одинаковый ии, то разумнее сделать одну задачу, которая будет рулить массивом ботов.
 
BVOGДата: Четверг, 12.11.2009, 11:04 | Сообщение # 4
Полковник
Группа: Проверенные
Сообщений: 184
Награды: 0
Репутация: 4
Статус: Offline
А по-моему у него так и сделано. Просто он этого не указал.

Skype: thebvog
 
ninthДата: Четверг, 12.11.2009, 11:12 | Сообщение # 5
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Тема перенесена в общие вопросы. В примерах кода выкладываются готовые примеры )
 
BVOGДата: Понедельник, 23.11.2009, 21:26 | Сообщение # 6
Полковник
Группа: Проверенные
Сообщений: 184
Награды: 0
Репутация: 4
Статус: Offline
Хорошо.

Добавлено (23.11.2009, 21:26)
---------------------------------------------
Вот пример кода:

Code

class bot(DirectObject):
  def __init__(self):
   self.health = 0 # С этим всё должно быть понятно
   self.maxhealth = 0
   self.level = 1
   self.maxlevel = 10
   self.attack = self.level*100 # Атака бота зависит от уровня, можно селать и другое
   self.exp = 0 # Опыт
   self.status = "live" #Состояние бота жив или мёртв
   self.model = loader.loadModel('res/actor/bot')
   self.model.reparentTo(render)
   # Дальше делаете то, что вам нужно с моделями: задаёте свой-ва и collision
  def HP(self,n): # Уменьшение и увеличение здоровья
   self.health += n
  def equip(self,task): # Описание обработки
   if (self.health == 0):
    self.status = "died"
   for i in range (1,self.maxlevel): # Просчёт уровня бота
    if (self.exp / i **2*100 ):
     self.level += 1
   self.attack = self.level*100
   ...

# Такой же объект для игрока

# Затем объявление ботов
botes = []
for b in range(0,10):
  botes.append(bot)

Припишите если вам нужно, ещё можно что-нибудб добавить.


Skype: thebvog
 
  • Страница 1 из 1
  • 1
Поиск: