Flatiron 프로젝트 1-Ruby 사용 예제 방법

8437 단어
Flatiron phase 1 CLI 응용 프로그램 프로젝트에 대해 대화형 사소한 게임을 만들었습니다.제가 옛날 JEOPARDY가 있는 API를 사용했어요!단서, 나는 이 데이터로 사용자에게 좋은 형식의 단서를 설정했다.나는 두 명의 유저로 하여금 자질구레한 전투에서 서로 경쟁하게 했다.게임은 두 가지 형식이 있는데 하나는 사용자가 하나의 종류를 선택하는 것이다. 게임의 모든 문제는 이 종류에서 나온다.또 다른 방법은 무작위 단서를 사용하여 단서의 종류와 가치를 나타내는 것이다.너는 랜덤 단서 2-20개를 선택할 수 있다.
샘플 방법은 내가 보기에 내가 프로젝트에서 만난 가장 유용한 방법이다.교체기와 매거진은 Sample 방법보다 훨씬 유용하지만, 내 프로젝트를 구축하기 전에 Sample의 기능을 몰랐다.
나에게 있어서 공백 파일부터 시작하는 것은 프로젝트에서 가장 어려운 부분이다.일단 내가 공을 굴리기 시작하면, 이것은 느리고 심사숙고한 과정이다.나는 내가 배우고 있는 모든 방법과 과정, 그리고 그것을 어떻게 서로 연결시키는지 진지하게 생각할 시간을 들여야 한다.일부는 정말 나를 느리게 했다.
나의 목표는 89개의 랜덤 단서 라이브러리에서 12개의 랜덤 단서 대상을 추출하여 랜덤 게임을 만들고 실례 변수에 분배하는 것이다.
주의: 나는 12개의 단서 중 어떤 중복된 값도 원하지 않는다.
내 프로세스:
그것은 결국 내 프로젝트의 힘든 부분이 되었다.나는 우선 한 가지 일을 12번 해야 한다. 이것은 매우 간단하다.
           12.times do
               What to put here???
           end
이것이 바로 Sample 방법으로 들어가는 곳이다.이 시간 내에 나는 예시적인 방법을 사용할 것이다.Sample은 당신이 전달한 배열에서 무작위 요소를 추출합니다.이 예에서, 나는 89개의 단서에서 추출하고, 단서에서 id 번호를 얻는다.나는 이 값을 어디에 저장해야 할지 고려해야 하기 때문에, 나는 그것을 하나의 그룹에 저장했다. 나는 방법이 시작될 때 이 그룹을 초기화했다.
       def random_clues
            id = []
              12.times do
                id << Clue.all.sample.id
               end
       end
처음에는 기뻤어요.이것은 나에게 12개의 단서 대상의 id 번호를 줄 것이다.나는 이 단서를 반복할 수 있다.모든 그룹은 id 번호가 일치하는 대상을 찾아서 실례 변수에 저장합니다.
     def random_clues
            id = []
                12.times do
                    id << Clue.all.sample.id
                end
           @board = Clue.all.select do |x|
           id.include?(x.id)
           end
         end
이 예에서, 나는 블록에서true의 모든 값을 되돌려 주기 위해 select 매거진을 사용할 것이다.
나의 사고 과정:
이제 나는 12개의 무작위 단서가 있는 실례 변수를 필요로 한다. 나는 나의 CLI 클래스에서 그것을 계속 사용할 수 있다.잠깐만, 중복된 단서가 있을지도 몰라!검사가 필요합니다.

이것이 바로 내가 중복 단서의 대상을 설명하는 방법이다.
 def random_clues
       id = []
           12.times do
               id << Clue.all.sample.id
           end
       if id.uniq == id
           @board = Clue.all.select do |x|
           id.include?(x.id)
           end
       else
           random_clues
       end
현재 id.uniq==id를 확보하기 위해 검사 중입니다. 만약 이것이 사실이라면 단서를 계속 실행할 수 있습니다.전부매거진을 선택하면 모든 것이 좋습니다.만약 이것이 사실이 아니라면, 그것은 이 방법을 다시 시작해야 한다.
나의 사고 과정:
이것은 통할 수 있을 것 같지만, 보기에 매우 지루하다.나는 이 점에 동의한다. 이따가 재구성을 고려할 것이다.
나는 코드를 테스트했다. 코드가 작동했다. 그리고 다시 테스트했다. 코드가 작동하지 않았다.나는 장정법으로 약 30분 동안 연속으로 했다.내가 뭘 찾을 수 있는지 알아봐.나는 확실히 오류가 발생한 곳을 찾았다. 이것은 이 방법에서 무작위적인 단서이다. 그러나 나는 왜 그것이 때때로 일을 할 수 있는지, 왜 할 수 없는지 모르겠다. 나는 연구를 통해 다른 프로그래머와 이야기를 나누면서 얻은 결론은, 나에게 귀속 문제가 있다는 것이다.random 단서를 다시 호출할 때 오류가 발생할 수 있습니다.
어떤 이유로든 한 항목을 절반의 시간 동안 유효하게 하는 것은 받아들일 수 없다.그때 나는 두 번째로 우연히 예시적인 방법을 발견했다.그것은 이미 나의 코드에 나타났는데, 이 과정에서부터 나는 그것을 별로 고려한 적이 없다.진일보한 연구를 통해 나는 네가 정수 파라미터를 전달할 수 있다는 것을 발견했다.이것은 그룹에서 유일한 원소의 수량을 추출할 것이다.
나의 사고 과정:
와, 내가 이 길을 더 어렵게 만들었어.아마도 이러한 추가 절차로 이 방법을 정의하기 전에 나는 이것에 대해 더 많은 연구를 해야 할 것이다.
나의 방법은 이 모든 코드에서 나온다
 def random_clues
       id = []
           12.times do
               id << Clue.all.sample.id
           end
       if id.uniq == id
           @board = Clue.all.select do |x|
           id.include?(x.id)
           end
       else
           random_clues
       end
end
이 경우:
def random_clues(int)
       @board = Clue.all.sample(int)
   end

이것은 나의 목표에 매우 도움이 될 뿐만 아니라, 나의 프로젝트에 약간의 유연성을 창조했다.현재 이런 유형의 게임에 대해 나는 고정된 수량의 무작위 단서에 국한되지 않고 사용자로 하여금 그들이 얼마나 많은 단서를 가지고 싶은지 선택하게 할 수 있다.
배달:
수조=[1,2,3,4,5,6,7,8]
어레이sample=>[4]#은 배열의 임의 요소를 반환합니다.샘플(3)=>[3,7,1]#은 그룹에서 무작위 순서로 3개의 무작위 요소(중복 요소 없음)를 되돌려줍니다

좋은 웹페이지 즐겨찾기