def atualiza_ponto(ponto): prolog.consult('database.pl') pontuacao = list(prolog.query('pontuacao(P)')) if len(pontuacao) == 0: py_assert('database.pl', 'pontuacao(%s).' % (ponto)) return False py_retract('database.pl', 'pontuacao(%s).' % (pontuacao[0].get('P'))) pontos = pontuacao[0].get('P') + ponto py_assert('database.pl', 'pontuacao(%s).' % (pontos))
def atualiza_energia(energia): prolog.consult('database.pl') energias = list(prolog.query('energia(E)')) if len(energias) == 0: py_assert('database.pl', 'energia(%s).' % (energia)) return False py_retract('database.pl', 'energia(%s).' % (energias[0].get('E'))) energia_nova = energias[0].get('E') + energia py_assert('database.pl', 'energia(%s).' % (energia_nova))
def atualiza_municao(total): prolog.consult('database.pl') municao = list(prolog.query('municao(B)')) if len(municao) == 0: py_assert('database.pl', 'municao(0).') return False py_retract('database.pl', 'municao(%s).' % (municao[0].get('B'))) total_novo = municao[0].get('B') + total py_assert('database.pl', 'municao(%s).' % (total_novo))
def atualiza_estado(x, y): prolog.consult('database.pl') estado = list(prolog.query('estado(%s,%s, T)' % (x, y))) if len(estado) == 0: py_assert('database.pl', 'estado(%s,%s,1).' % (x, y)) return False py_retract('database.pl', 'estado(%s,%s,%s).' % (x, y, estado[0].get('T'))) py_assert('database.pl', 'estado(%s,%s,%s).' % (x, y, int(estado[0].get('T')) + 1))
def pega_ouro(): prolog.consult('check.pl') x, y, direcao = acha_coordenada_arqueiro() ouro = list(prolog.query('ouro(%s,%s)' % (x, y))) #print len(ouro) if len(ouro) == 0: return False tem_ouro = list(prolog.query('tem_ouro(%s,%s)' % (x, y))) if len(tem_ouro) > 0: py_retract('check.pl', 'ouro(%s,%s).' % (x, y)) atualiza_ponto(1000) return True return False
def munda_local_arqueiro(x, y, xx, yy, direcao): if (not detecta_parede(xx, yy)): py_retract('database.pl', "local_arqueiro") print 'retract de local_arqueiro(_,_,_)' py_assert('database.pl', "local_arqueiro(%s,%s,%s)." % (xx, yy, direcao)) print 'assert de local_arqueiro(%s,%s,%s)' % (xx, yy, direcao) prolog.consult('database.pl') if ((len(list(prolog.query("visitadas(%s,%s)" % (xx, yy))))) == 0): py_assert('database.pl', "visitadas(%s,%s)." % (xx, yy)) print 'assert de visitadas(%s,%s)' % (xx, yy) descobre_parede_adjacente(xx, yy) return True return False
def faz_dano(x, y, dano): prolog.consult('check.pl') inimigo = list(prolog.query('inimigo(D,V,%s,%s)' % (x, y))) vida_inimigo = inimigo[0].get('V') - dano #print vida_inimigo py_retract( 'check.pl', 'inimigo(%s,%s,%s,%s).' % (inimigo[0].get('D'), inimigo[0].get('V'), x, y)) if vida_inimigo <= 0: py_assert('database.pl', 'inimigo_grito(%s,%s)' % (x, y)) py_assert('database.pl', 'seguro(%s,%s)' % (x, y)) py_assert('database.pl', 'visitadas(%s,%s)' % (x, y)) return True print 'inimigo(%s,%s,%s,%s).' % (inimigo[0].get('D'), vida_inimigo, x, y), '\ntem_inimigo(%s,%s).' % (x, y) py_assert( 'check.pl', 'inimigo(%s,%s,%s,%s).' % (inimigo[0].get('D'), vida_inimigo, x, y)) py_retract('database.pl', 'tem_inimigo(%s,%s).' % (x, y)) py_assert('database.pl', 'tem_inimigo(%s,%s).' % (x, y)) return False