동굴 순찰 자-어둠을 탐험


9

당신의 지질 학자 친구가 사무실 문을 거의 터뜨렸고, 눈이 크게 뜨거워졌고, 방금 발견 한 장소로 그를 데려 오라고 요청했습니다. 도중에 그는 문자 그대로 금을 쳤다고 생각한다고 설명합니다. 유일한 문제는 매우 불안정한 지붕이있는 동굴에 지하 깊은 곳에 묻혀 있다는 것입니다. 스펠 렁킹을하는 것은 너무 위험하므로 동굴 탐험 로봇 중 한 명이 로봇을 다시 잡아 당기기 전에 최대한 많은 금을 모으도록 프로그램하길 원합니다. 그는 또한 동굴을 조사하고 로봇에 해로울 수있는 야생 생물을 발견했으며 여전히 사용할 수있는 장비를 내려 놓았다고 언급합니다. 각 로봇에는 두 개의 암과 다양한 센서가 장착되어 있습니다. 현장에 도착하면 더 많은 코더를 모집 할 계획이라고 알려줍니다.

이제, 그 핵심에 이르기까지. 센서는 정보를 ASCII 문자로 프로그램에 전달합니다. 다음은 각 캐릭터의 의미와 봇이 동굴에서 만날 수있는 모든 것에 대한 설명입니다.

Code    Name/Description

Y       Your bot
        You do things

@       Other bots
        They do other things

-       Ground
        This doesn't do things

C       Centipede
        These will bite you and leave a poison effect
        The bite will cost 1 health
        The poison effect will last for 3 turns, costing 2 health each turn

B       Bats
        If bats end up in the same space you are, your bot runs in a random direction during its turn rather than what you told it to do

L       Lion (because reasons)
        Lions deal heavy damage, 10 health, each time they attack

F       Food
        Eating this will give you 5 health
        Can only be used once

W       Water
        Drinking this will cure poison effects early
        Can only be used once

R       Revealer
        This will increase the range of your visibility to an 11x11 grid
        The extra range will only be 75% correct, but the original range won't be effected

K       Knife
        You do twice as much damage to other bots if you have a knife

G       Gold
        The whole reason you're doing this in the first place

N       Nurse Nina
        She mend you good
        Restores your health by 10 while you occupy the same space as her

}       Boulder
        You can't walk over boulders, and neither can anything else

P       Pit
        If you fall in a pit, you will be stuck for 3 turns

동굴의 크기는 참여하는 봇 수에 따라 커집니다. 30x30으로 시작하며 모든 봇에 대해 10x10이 추가로 제공됩니다. 따라서 2 명의 봇이 50x50 동굴을 탐험하게됩니다.

봇은 20의 체력으로 시작하지만 건강에 대한 최대 제한은 없습니다.

입력:

STDIN을 통해 다음 형식으로 입력을받습니다.

20,5,10,1,0,True,False    <-health, number gold pieces, number of turns your bot has lasted, number of until the poison wears off, number of turns until you are no longer stuck in a pit, if you have a revealer, if you have a knife
-----
-G}--
--Y-L
-C---
---B-

첫 번째 줄에는 봇에 대한 정보가 있고 나머지 줄에는 봇이 볼 수있는 그리드가 있습니다. 봇이 동굴의 4 개의 벽 중 하나에 대면하는 경우 다음과 같은 격자가 나타납니다 (서쪽으로가는 경우).

---
}--
Y--
---
---

동굴은 감싸지 않으며 비전도 아닙니다. 동굴의 벽은 표시되어 있지 않으며, 봇이 벽 근처에 있다는 것을 나타내는 유일한 표시는 시야가 줄어든다는 것입니다. Revealer를 사용하면 다음과 같은 것을 얻을 수 있습니다.

--------C--
LW--------B
---K-N-----
--------BR-
-F---------
--B--Y---@N
-W@---F----
------K-F--
----@-}----
R@---G}--}-
--------G-R

산출:

한 턴에 두 번 움직이며 다음과 같은 형식으로 출력됩니다.

MNNANW    <- Moves are groups of 3 characters representing the action and the direction

가능한 조치는 다음과 같습니다.

M    Move - Move your bot in the specified direction
A    Attack - Attack the square in the specified direction
H    Hold - Do nothing

가능한 지침은 다음과 같습니다.

NN - North (up)
NE - Northeast (up-right)
EE - East (right)
SE - Southeast (down-right)
SS - South
SW - Southwest
WW - West
NW - Northwest

동작은 왼쪽에서 오른쪽으로 적용됩니다.

회전 :

다음과 같은 방식으로 진행 상태를 바꿉니다.

  1. 독 효과는 중독 된 모든 플레이어에게 적용됩니다

  2. 비봇 이동 및 공격

    2a. 사자, 지네 및 박쥐가 무작위로 움직입니다.

    2b. 라이온스와 지네는 직접 인접한 모든 것을 공격합니다 (대각선 포함)

    2c. 박쥐 효과는 박쥐와 같은 공간에있는 경우에만 봇에만 적용됩니다.

    2d. 간호사 니나는 3 턴 동안 한 위치에 머무른 다음 임의의 위치로 점프합니다.

  3. 봇 이동

    3a. 봇이 유효하지 않은 출력을 제공하면 이동하지 않습니다

    3b. 봇은 가능한 한 출력으로 지정된 공간에 가까워 지려고 시도합니다 (자세한 내용은 하단의 참고 참조).

    3c. 지네, 사자 또는 박쥐에 대한 한 번의 공격으로 사망

    3d. 칼없이 다른 봇을 공격하면 5의 피해를 입히고 10은 칼로 공격합니다

규칙 :

  1. OS X 또는 Linux에서 실행할 수있는 공통 언어를 고수하십시오.

  2. 선택적으로 1kb 이하의 데이터를 파일에 쓸 수 있습니다

채점 :

봇은 하나만 남을 때까지 또는 50 턴이 지나갈 때까지 동굴에 있어야합니다. 봇은 수집 한 금화 수와 지속 된 턴 수의 합으로 판단됩니다.

여기 에서 테스트를 위해 컨트롤러 코드를 다운로드 할 수 있습니다 (다운로드 할 때와 같은 디렉토리에 "bots"라는 폴더를 만들고 "bots"안에 봇을 넣으십시오) NumPy를 실행하려면이를 실행해야합니다. 그것을 파고 자유롭게 느끼십시오, 그러나 당신은 혼란을 변명해야 할 것입니다 ...

랜덤 봇에 대한 코드는 다음과 같습니다.

#!/usr/bin/python
import random as r

a = ['M','A','H']
d = ['NN','NE','EE','SE','SS','SW','WW','NW']

print(a[r.randint(0,2)]+d[r.randint(0,7)]+a[r.randint(0,2)]+d[r.randint(0,7)])

**** 봇은 항상 출력이 지정한 일반적인 방향으로 움직이지만 바위 나 벽에 막힌 경우 정확한 방향은 상황에 따라 다릅니다. 예를 들어 봇이 벽과 같은 경우 :

---
}--
Y--
---
---

그리고 당신의 출력은

MNWMSW

봇은 한 칸 아래로 이동합니다. 북쪽이나 서쪽으로는 움직일 수 없었으므로 그 움직임은 효과가 없었습니다. 남쪽으로 움직일 수 있었지만 서쪽으로는 움직일 수 없었습니다. 그러나 봇이 북동쪽으로 이동하려고하면 해당 공간으로 직접 이동합니다 (대각선 이동은 절차가 아니라 대각선)

리더 보드

이들은 4 게임의 평균 점수입니다.

The bot of Survival:    54.75
Coward:                 52.25
Pufferfish:             50.00
Randombot:              50.00
Indiana Jones:          47.50
TheoremBot:             46.50

각 봇의 건강 상태는 어느 정도입니까? 그리고 동굴의 가장자리는 어떻게 생겼습니까?
Conor O'Brien

20부터 시작하여 원하는만큼 수집 할 수 있습니다.
The Beanstalk

동굴의 가장자리는 표시되어 있지 않으며 프로그램은 잠재적으로 걸을 수있는 비트 만 가져옵니다.
The Beanstalk

당신은 정말로 당신의 건강을 알고 있습니까?
pppery

봇 비전의 길이와 너비를 입력 할 수 있습니까?
LegionMammal978

답변:


4

인디애나 존스, 파이썬 2

이 봇은 아무것도 두려워하지 않습니다. 금을 얻으려고 노력할 것이다. 찾을 수 없으면 칼로 상대를 찌르려고 시도합니다.

#!/usr/bin/env python
import sys
import random
data = sys.stdin.readlines()
health, gold, turns, poison_remaining, pit_remaining, revealer, knife = eval(data[0])
lines = data[1:]

myloc = [-1, -1]

width, height = len(lines[0]), len(lines)

for y, line in enumerate(lines):
    if line.find('Y')>-1:
        myloc = [line.index('Y'), y]
if myloc[0]<width/2:
    padding = int(width/2-myloc[0])
    lines = ['-'*padding+line for line in lines]
    myloc[0]+=padding
elif myloc[0]>width/2+1:
    padding = int(myloc[0]-width/2-1)
    lines = [line+'-'*padding for line in lines]

if myloc[1]<height/2:
    padding = int(height/2-myloc[1])
    lines = ['-'*width]*padding + lines
    myloc[1]+=padding
elif myloc[1]>height/2+1:
    padding = int(myloc[1]-height/2-1)
    lines = lines + ['-'*width]*padding

uddirections = {1:'N',0:'',-1:'S'}
lrdirections = {1:'E',0:'',-1:'W'}

golds = {}
for y, line in enumerate(lines):
    if 'G' in line:
        x = line.index('G')
        direction = ((uddirections[max(min(myloc[1]-y,1),-1)]+lrdirections[max(min(x-myloc[0],1),-1)])*2)[:2]
        distance = max(abs(myloc[0]-x), abs(myloc[1]-y))
        golds[distance] = direction

bots = {}
for y, line in enumerate(lines):
    if '@' in line:
        x = line.index('@')
        direction = ((uddirections[max(min(myloc[1]-y,1),-1)]+lrdirections[max(min(x-myloc[0],1),-1)])*2)[:2]
        distance = max(abs(myloc[0]-x), abs(myloc[1]-y))
        bots[distance] = direction

foods = {}
for y, line in enumerate(lines):
    if 'F' in line:
        x = line.index('F')
        direction = ((uddirections[max(min(myloc[1]-y,1),-1)]+lrdirections[max(min(x-myloc[0],1),-1)])*2)[:2]
        distance = max(abs(myloc[0]-x), abs(myloc[1]-y))
        foods[distance] = direction

knives = {}
for y, line in enumerate(lines):
    if 'K' in line:
        x = line.index('K')
        direction = ((uddirections[max(min(myloc[1]-y,1),-1)]+lrdirections[max(min(x-myloc[0],1),-1)])*2)[:2]
        distance = max(abs(myloc[0]-x), abs(myloc[1]-y))
        knives[distance] = direction

if golds:
    direction = golds[min(golds.keys())]
elif not knife and knives:
    direction = knives[min(knives.keys())]
elif health<20 and foods:
    direction = foods[min(foods.keys())]
elif bots and knife:
    direction = bots[min(bots.keys())]
    if min(bots.keys())==1:
        print ('A'+direction)*2
        sys.exit(0)
    elif min(bots.keys())==2:
        print 'M'+direction+'A'+direction
        sys.exit(0)
else:
    print ('M'+random.choice('NS')+random.choice('NEWS'))*2
    sys.exit(0)
print ('M'+direction)*2

이 작업을 수행하기 위해 한 가지만 변경해야했습니다. line.index('Y')"Y"가 줄에 없으면 오류가 발생하지만 line.find('Y')"Y"가 줄에 없으면 -1을 반환합니다. 그렇지 않으면 훌륭합니다!
The Beanstalk

당신은 bot cane 때때로 output MSNMSN, 이것은 유효하지 않습니다.
pppery

3

겁쟁이, 파이썬 3

겁쟁이는 항상 잠재적 인 위협으로부터 도망칩니다.

그러나, 그가 매우 강하다고 느낀다면, 그는 갑자기 실수를하고 그 근처의 모든 것을 찌릅니다.

현재 구현의 문제점은 이동 명령이 첫 번째 이동인지 두 번째 이동인지에 대한 지식없이 발행된다는 것입니다.

#!/usr/bin/env python3.4

import sys, random


class Coward():
  """
  A coward always runs from potential threats.

  However, if he feels super strong, he will suddenly run amok 
  and stab everything near him.  
  """
  def __init__(self, hp, gold, turn, poison, pit, revealer, knife):
    self.hp=int(hp)
    self.gold=int(gold)
    if knife=="True": self.knife=True
    else: self.knife=False    
    self.pit=int(pit)
    self.poison=int(poison)

  def readGrid(self, grid):
    self.grid=grid.split("\n")
  @property
  def _confidence(self):
    return self.hp+5*self.knife-2*self.poison
  @property
  def _lineOfY(self):
    for i, line in enumerate(self.grid):
      if "Y" in line:
        return i
  @property
  def _colOfY(self):
    return self.grid[self._lineOfY].index("Y")
  @property
  def _maxX(self):
    return len(self.grid)-1
  @property
  def _maxY(self):
    return len(self.grid[0])-1
  def move(self, step):
    d = {'NN':(0,-1),'NE':(1,-1),'EE':(1,0),'SE':(1,1),'SS':(0,1),'SW':(-1,1),'WW':(-1,0),'NW':(-1,-1)}
    c2d={(0,-1):'NN',(1,-1):'NE',(1,0):"EE",(1,1):"SE",(0,1):"SS",(-1,1):"SW",(-1,0):"WW",(-1,-1):"NW"}
    #Don't move into wall/ boulder/ pit
    #print(d, file=sys.stderr)
    for k,v in list(d.items()):
      x=self._lineOfY+v[0]
      y=self._colOfY+v[1]
      #print (k, v ,x , y, file=sys.stderr)
      if x<0 or y<0 or x>self._maxX or y>self._maxY:
        #print ("Out of bounds: ", k, file=sys.stderr)
        del d[k]
      elif self.grid[x][y]=="}" or self.grid[x][y]=="P":
        del d[k]
    #Always avoid bats, and enemys
    for dx in range(-2,3):
      for dy in range(-2,3):
        x=self._lineOfY+dx
        y=self._colOfY+dy
        if x<0 or y<0 or x>self._maxX or y>self._maxY:
          continue;
        if self.grid[x][y] in ["B", "L", "C", "@"]:
          for k in self._toDirection(dx, dy):
            if k in d: del d[k] #Too many threats from all sides can paralyze the Coward: nowhere to go...
    #print(d, file=sys.stderr)
    tomove=[]
    #Neighboring fields
    for dx in [-1,1]:
      for dy in [-1,1]:
        x=self._lineOfY+dx
        y=self._colOfY+dy
        if x<0 or y<0 or x>self._maxX or y>self._maxY:
          continue
        if self.poison>0 and self.grid[x][y]=="W":
          for k,v in d.items():
            if v==(dx,dy):
              tomove.append(k)
        if self.grid[x][y]=="N": #Always go to nurse, even if dangerous
          tomove.append(c2d[(x,y)])
        if self.grid[x][y] in ["F","K","G"]: #Go to Food, Knife or Gold, if save
          for k,v in d.items():
            if v==(dx,dy):
              tomove.append(k)
    #Further away: Go towards food, knife and gold and Nina if save.
    for target in ["N", "F", "G", "K"]:
      for dx in [-2,2]:
        for dy in [-2,2]:
          x=self._lineOfY+dx
          y=self._colOfY+dy
          if x<0 or y<0 or x>self._maxX or y>self._maxY:
            continue
          if self.grid[x][y]==target:
            l=[ k for k in self._toDirection(dx,dy) if k in d]
            if l: tomove.append(random.choice(l))
    s=list(d.keys())
    random.shuffle(s)
    tomove+=s
    try:
      return "M"+tomove[step-1]
    except IndexError:
      return ""
  def attack(self, step):    
    c2d={(0,-1):'NN',(1,-1):'NE',(1,0):"EE",(1,1):"SE",(0,1):"SS",(-1,1):"SW",(-1,0):"WW",(-1,-1):"NW"}
    #If Bot next to you: always attack
    for k,v in c2d.items():
      x=self._lineOfY+k[0]
      y=self._colOfY+k[1]
      if x<0 or y<0 or x>self._maxX or y>self._maxY:
        continue
      if self.grid[x][y]=="@":
        return "A"+v
    #If Bot or monster could come closer: attack potential new position
    attDir={(-2,-2):["NW"], (-2,-1):["NW","WW"], (-2,0):["WW","NW","SW"], (-2,1):["WW","SW"], (-2,2):["SW"],(-1,-2):["NW","NN"], (-1,2):["SW","SS"], (0,2):["SW","SS","SE"],(0,-2):["NW","NN","NE"],(1,-2):["NN","NE"],(1,2):["SS","SE"],(2,-2):["NE"],(2,-1):["NE","EE"], (2,0):["NE","EE","SE"], (2,1):["EE","SE"], (2,2):["SE"]}
    for k,v in attDir.items():
      x=self._lineOfY+k[0]
      y=self._colOfY+k[1]
      if x<0 or y<0 or x>self._maxX or y>self._maxY:
        continue
      if self.grid[x][y] in ["@","L","C","B"]:
        return "A"+random.choice(v)
    return ""
  def _toDirection(self,dx,dy):
    if dx<0:
      if dy<0:
        return ["WW","NW","NN"]
      elif dy==0:
        return ["WW","NW","SW"]
      elif dy>0:
        return ["WW","SW","SS"]
    elif dx>0:
      if dy<0:
        return ["EE","NE","NN"]
      elif dy==0:
        return ["EE","NE","SE"]
      elif dy>0:
        return ["EE","SE","SS"]
    elif dx==0:
      if dy<0:
        return ["NN","NE","NW"]
      elif dy==0:
        return []
      elif dy>0:
        return ["SS","SE","SW"]
  def _nearBat(self):
    for dx in range(-2,3):
      for dy in range(-2,3):
        x=self._lineOfY+dx
        y=self._colOfY+dy
        if x<0 or y<0:
          continue;
        if self.grid[x][y]=="B":
          return True
    return False
  def makeTurn(self):
    try:
      command=""
      #If stuck, just attack
      if self.pit:
        command+=self.attack(1)+self.attack(2)
      #Always run from bats
      if self._nearBat:
        command+=self.move(1)+self.move(2)
      #If high-confidence: attack
      if self._confidence>30:
        command+=self.attack(1)+self.attack(2)
      #Else: Move somewhere
      command+=self.move(1)+self.move(2)
      #Just in case, two random attacks
      d = ['NN','NE','EE','SE','SS','SW','WW','NW']
      a=random.choice(d)
      b=random.choice([ x for x in d if x!=a])
      command+="A"+a+"A"+b
      return command[:6]
    except Exception as e:
      #print (e, file=sys.stderr)
      #Attacking is better than nothing
      d = ['NN','NE','EE','SE','SS','SW','WW','NW']
      a=random.choice(d)
      b=random.choice([ x for x in d if x!=a])
      return "A"+a+"A"+b


info=sys.stdin.readline()
grid=sys.stdin.read()
info=info.split(",")
bot=Coward(*info)
bot.readGrid(grid)
t=bot.makeTurn()
#print(t, file=sys.stderr)
print(t)

3

생존의 봇-Python 2

from __future__ import print_function
health,gold,survived,poison,pit,revealer,knife = input()
if pit:
    exit()
#Yes, this is python 2, despite the use of input()
lines = []
try:
    while True:
        lines.append(raw_input())
except EOFError:
    pass
CMOVES={"NW":(-1,-1),"NN":(-1,+0),"NE":(-1,+1),
        "WW":(+0,-1),             "EE":(-0,+1),
    "SW":(+1,-1),"SS":(+1,+0),"SE":(+1,+1),
}
MOVES={v:k for k,v in CMOVES.iteritems()}
import sys
def get_your_pos():
    for row,line in enumerate(lines):
        for col,square in enumerate(line):
            if square == "Y":
                return row,col
    raise ValueError("Your bot is not present.")
def isnearby(thing,p=None):
    your_pos = p or get_your_pos()
    for move in MOVES:
        yp = your_pos[0]+move[0],your_pos[1]+move[1]
        try:
            if yp[0] >= 0 and yp[1] >= 0 and lines[yp[0]][yp[1]] == thing:
                return move
        except IndexError:
            #Edge of cavern
            pass
for turn in range(2):
    import random
    nprio = .5
    if health > 25:
        nprio -= .2
    elif health < 10:
        nprio += .3
    if poison:
        nprio += .18
    #heal
    motive = how = None
    if random.random() < nprio:
        nurse = isnearby("N")
        if nurse:
            motive = "M"
            how = MOVES[nurse]
        elif random.random() < nprio:
            food = isnearby("F")
            if food:
                motive = "M"
                how = MOVES[food]
    #cure poison
    if poison and not motive:
        water = isnearby("W")
        if water:
            motive = "M"
            how = MOVES[water]
    if not motive:
        #Kill lions, bats, and centipedes
        for animal in ("L","B","C"):
            animal = isnearby(animal)
            if animal:
                motive = "A"
                how = MOVES[animal]
                y = get_your_pos()
                y = y[0]+animal[0],y[1]+animal[1]
                lines = map(list,lines)
                lines[y[0]][y[1]] = "-"
                break
        else:
            #Pick up knives
            if not knife:
                knife = isnearby("K")
                if knife:
                    motive = "M"
                    how = MOVES[knife]
            #Attack other bots
            else:
                prey = isnearby("@")
                if prey:
                    motive = "A"
                    how = MOVES[prey]
    #Get gold
    gold = isnearby("G")
    if gold and not motive:
        motive = "M"
        how = MOVES[gold]
    def isvalidmove(c):
        c = CMOVES[c]
        y = get_your_pos()
        y=(y[0]+c[0],y[1]+c[1])
        if y[0] >= 0 and y[1] >= 0:
            try:
                lines[y[0]][y[1]]
            except LookupError:
                pass
            else:
                return True
    if turn and not motive:
        motive = "M"
        while not (how and how not in (isnearby("}"),isnearby("P"),isnearby("@"))\
              and isvalidmove(how)):
            how = random.choice(CMOVES.keys())
    if not motive:break
    if not turn and motive == "M":
        lines = map(list,lines)
        yp = get_your_pos()
        lines[yp[0]][yp[1]] = "-"
        yp=[yp[0]+CMOVES[how][0],yp[1]+CMOVES[how][1]]
        lines[yp[0]][yp[1]] = "Y"
    print(motive+how,end="")
else:
    exit()
#Nothing found on first move
def isvaguelynearby(thing):
    your_pos = get_your_pos()
    for move in MOVES:
        yp = your_pos[0]+move[0],your_pos[1]+move[1]
        try:
            if yp[0] >= 0 and yp[1] >= 0 and board[yp[0]][yp[1]] != "P":
                dest = isnearby(thing,yp)
                if dest:
                    return move,dest
        except IndexError:
            #Edge of cavern
            pass
if random.random() < nprio:
    dests = isvaguelynearby("N")
    if not dests and random.random() < nprio:
        dests = isvaguelynearby("F")
    if dests:
        m1,m2 = MOVES[dests[0]],MOVES[dests[1]]
        print("M" + m1 + "M" + m2)
        exit()
dests = (poison and isvaguelynearby("W")) or (not knife and isvaguelynearby("K"))\
    or isvaguelynearby("G")
prey = isvaguelynearby("L") or isvaguelynearby("B") or isvaguelynearby("C") or \
       (knife and isvaguelynearby("@"))
if dests:
    m1,m2 = MOVES[dests[0]],MOVES[dests[1]]
    print("M" + m1 + "M" + m2)
elif prey:
    m1,m2 = MOVES[prey[0]],MOVES[prey[1]]
    print("M" + m1 + "A" + m2)
else:
    how = None
    while not (how and how not in     (isnearby("}"),isnearby("P"),isnearby("@"))\
          and isvalidmove(how)):
        how = random.choice(CMOVES.keys())
    print("M"+how,end="")
    lines = map(list,lines)
    yp = get_your_pos()
    lines[yp[0]][yp[1]] = "-"
    yp=[yp[0]+CMOVES[how][0],yp[1]+CMOVES[how][1]]
    lines[yp[0]][yp[1]] = "Y"
    while not (how and how not in (isnearby("}"),isnearby("P"),isnearby("@"))\
          and isvalidmove(how)):
            how = random.choice(CMOVES.keys())
    print("M"+how)

편집 : 더 나은 구덩이 회피가 추가되었습니다.


2

복어, 파이썬 3+

나는 단지 그 사람입니다.

#!/usr/bin/env python3.4
import random
def select():
 return "A"+["NN","NE","EE","SE","SS","SW","WW","NW"][random.randint(0,7)]
print(select()+select())

이 봇은 자립의 목적을 가지고 있습니다. 시간이 있으면 나중에 골프를 찾는 것을 추가 할 수 있습니다.
Conor O'Brien

코드가 조금 더 길어 지겠지만, 복어는 더 치명적으로 원한다면 같은 차례에 두 번 공격 할 수 있습니다.
The Beanstalk

트윗 담아 가기
Conor O'Brien

당신은이 봇이 금을 얻지 못할 것이며, 다른 모든 봇들이 "kill aura"로 방황하지는 않을 것입니다
pppery

@ppperry 나는 이것을 깨닫는다. 이것은 주로 볼 롤링을 얻는 것이 었습니다. 이기는 것이 아니라 인생을 조금 더 어렵게 만드는 것입니다. 로에서 블랙 햇 남자
코너 오브라이언
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.