Elm Warrior 시작

12875 단어 gameelmwarrior
너는 지하 감옥에서 깨어났다.너 혼자 얼어서 하마터면 굶어 죽을 뻔했다.전방의 어둠 속에서 발자국 소리와 칼날의 날카로운 소리를 들을 수 있다.당신이 사용할 수 있는 유일한 무기는 프로그래밍 언어인 Elm입니다.너는 살아서 나갈 수 있니?
Elm warrior는 다음과 같은 질문에 대답하기 위한 프로그래밍 게임입니다. 네, 이제 기본적인 Elm 문법을 알게 되었습니다. 다음에 저는 무엇을 해야 합니까?
몇 단계의 난이도를 높이는 과정에서 당신은 At의 지능, 느리지만 의지가 강한 전사를 프로그래밍하여 그를 감옥에서 살아나게 하려고 합니다.
지옥에서 탈출하는 데 성공하면 무료 죽음 경쟁에서 다른 사람과 해결 방안을 비교하거나 자신의 지도를 만들어서 계속 도전할 수 있다.
준비 다 됐어요?

입문


git와node를 설치해야 합니다.
그런 다음 복제할 수 있습니다elm-warrior-starter repo.starter repo는 재생을 시작하는 데 필요한 최소 샘플을 포함하고, elm-warrior repo 사용할 실제 프레임워크와 문서를 포함합니다.
starter repo를 복제하려면 명령줄에서 다음 명령을 실행할 수 있습니다.
git clone https://github.com/robinheghan/elm-warrior-starter
코드를 컴파일하고 실행하기 위해서elm와parcel을 다운로드해야 합니다.우리는 node의 패키지 관리자 npm를 사용하여 이 점을 실현할 수 있다. 왜냐하면 이러한 의존 관계는 이미 Repo에서 성명했기 때문이다.
cd elm-warrior-start
npm ci
인코딩을 시작할 준비가 되어 있을 것입니다.

구해 제1급


첫 번째 단계로, 우리는 코드를 컴파일하고 웹 서버를 시작하여 우리의 코드가 elmwarrior에 어떻게 영향을 미치는지 이해할 것이다.
npm start
이것은 http://localhost:1234 웹 서버를 시작할 것입니다. 따라서 웹 브라우저에 이 주소를 입력하십시오.다음을 참조하십시오.

목표는 전사를 방 반대편에 도착하게 하는 것이다.우리가 아직 코드 한 줄을 작성하지 않았기 때문에, 전사는 아무것도 하지 않았다.복구합시다!
기본 설정 IDE 또는 텍스트 편집기를 사용하여 엽니다src/elm/Player.elm.파일에는 다음 코드가 포함되어야 합니다.
module Player exposing (takeTurn)

import Warrior exposing (Warrior)
import Warrior.History exposing (History)
import Warrior.Map exposing (Map)


takeTurn : Warrior -> Map -> History -> Warrior.Action
takeTurn warrior map history =
    Warrior.Wait
elmwarrior를 실현하는 지능은 실현 함수와 마찬가지로 간단하다.이 함수는 한 번에 한 번씩 호출되며, 전사가 다음에 무엇을 해야 할지 지정하는 동작을 되돌려야 한다.보시다시피 이 함수는 Wait 동작만 되돌아오기 때문에 우리 전사들은 시종일관 서 있을 것입니다.
첫 번째 관문을 통과하기 위해서 우리는 전사를 오른쪽으로 이동시키는 동작을 되돌려야 한다.우리 전사들이 어떤 행동을 취할 수 있는지 알기 위해서는 consult the documentation 이 필요하다.여기서 우리는 Move 동작이 하나 있는데, 그것은 하나 Direction 가 필요하다.
다음과 같이 함수를 변경하여 이동 동작을 되돌려줍니다.
module Player exposing (takeTurn)

import Warrior exposing (Warrior)
import Warrior.History exposing (History)
import Warrior.Map exposing (Map)
import Warrior.Direction as Direction


takeTurn : Warrior -> Map -> History -> Warrior.Action
takeTurn warrior map history =
    Warrior.Move Direction.Right
우리 전사들은 지금 한 바퀴 돌 때마다 오른쪽으로 이동해야 한다.파일을 저장하고 브라우저를 새로 고치기만 하면 다시 실행할 필요가 없습니다npm start.전사들은 지금 출구에 쉽게 도착할 것이다.
일단 전사가 퇴출점에 도달하면 더 높은 난이도의 새로운 단계로 넘어갈 것입니다. 당신의 라운드 기능에 더 많은 지능이 필요합니다.당신은 모든 관문을 통해 감옥에서 탈출할 수 있습니까?

다음 단계 해결


turn 함수는 세 개의 매개 변수를 포함하고 있음을 알 수 있습니다.
첫 번째 파라미터는 전사 자체에 대한 정보를 포함한다.현재 건강 상태, 현재 위치, 재고 중의 현재 항목 등등.
두 번째 파라미터는 전사가 볼 수 있는 정보를 포함한다.너는 그것으로 출구를 찾거나 그 길에 존재할 수 있는 장애와 위험을 찾을 수 있다.
마지막 파라미터는 전사가 이전에 취한 모든 조작에 대한 정보와 전사의 이 시간 상태와 지도를 포함한다.당신은 이 전사가 이전에 어디에 갔었는지, 아니면 이 전사가 어디에서 무엇을 보았는지 기억하기 위해 이 정보를 사용할 수 있습니다.
이 모든 파라미터를 이용하여 전사들이 감옥에서 탈출하는 것을 도와야 합니다. 전사들이 실행하는 동작은 the documentation 에 열거되어 있기 때문에 반드시 자세히 읽어 주십시오.

디버깅



브라우저 창의 오른쪽 아래 모서리에 작은 Elm 로고가 있음을 알 수 있습니다.Time Travel Elm 디버거를 열려면 누르십시오.

디버거는 프로그램이 특정한 전환점에 있는 상태를 보기 위해 제때에 후퇴할 수 있도록 합니다. 이것은 함수가 조작한 원인을 쉽게 찾을 수 있습니다.

가속 또는 완화


몇 번의 달리기를 한 후에 당신은 전사들이 좀 빨리 이동하거나 느리게 이동하기를 바랄 수도 있습니다.이 설정은 열기 src/elm/Main.elm 를 통해 변경할 수 있습니다.
module Main exposing (main)

import Player
import Warrior.Map.Progression as Progression
import Warrior.Maps as Maps
import Warrior.Program as Warrior


main : Program () Warrior.Model Warrior.Msg
main =
    Warrior.program
        { maps = Maps.all
        , players = [ ( "Player", Player.takeTurn ) ]
        , msPerTurn = 500
        , progressionFunction = Progression.reachExitPoint
        }
msPerTurn 설정을 원하는 값으로 변경할 수 있습니다.100으로 설정하면 속도가 크게 빨라집니다.0으로 설정하면 속도가 빨라지지만 전사들의 개인적인 행동을 보기 어려울 수도 있다.속도를 늦추는 것은 가치를 높이는 문제일 뿐이다.

단일 차원에 집중하다


보시다시피 maps 에도 Main.elm 설정이 있습니다.
어떤 때, 전사들이 지도와 싸우고 있다는 것을 알았을 때, 지도를 한 장 한 장 훑어보고 싶지 않을 수도 있다.문서에서 볼 수 있습니다 list of all available maps.실행하고자 하는 지도만 포함하는 목록을 만들어서 maps 설정에 전달하면 효과가 좋은 지도에 시간을 낭비하는 것을 피할 수 있습니다.
예를 들어, 마지막 두 번째 관문에 주목한다면 Main.elm 파일을 다음 파일로 변경해서 전사들이 다른 모든 관문을 돌아다니지 않도록 할 수 있습니다.
module Main exposing (main)

import Player
import Warrior.Map.Progression as Progression
import Warrior.Maps as Maps
import Warrior.Program as Warrior


main : Program () Warrior.Model Warrior.Msg
main =
    Warrior.program
        { maps = [ Maps.straightGuardPickupPotion ]
        , players = [ ( "Player", Player.takeTurn ) ]
        , msPerTurn = 500
        , progressionFunction = Progression.reachExitPoint
        }

진일보한 도전



네가 감옥에서 탈출하는 데 성공했을 때, 너는 아마도 더 많은 도전을 희망할 것이다.Elm warrior는 자신의 지도를 만들 수도 있고 다른 사람과 공유할 수도 있으며 무료 죽음 경쟁을 할 수도 있다.
자신의 지도를 만들려면 looking at the code of the maps you've just tried out 및 읽기 map builder documentation 에서 영감을 얻을 수 있습니다.
데스매치는 단독multiplayer starter repo으로 복제할 수 있다.추가적인 즐거움을 얻기 위해, 당신은 당신의 친구에게 도전해서 누가 최고의 전사인지 볼 수 있습니다.최고의 Elm 프로그래머의 승리를 기원합니다!

좋은 웹페이지 즐겨찾기