본문 바로가기

분류 전체보기100

스피드 연산 게임 만들기8 지난 글에서 메뉴 처리 기능을 별도로 분리하고 테스트까지 진행했었다. 이제 메뉴 처리 관련 코드를 수정하지 않고 메뉴 선택 시 원하는 기능이 처리될 수 있게 해보자. 지난 글의 마지막에 얘기했던 것처럼 배열의 each 메서드에서 힌트를 얻을 수 있는데 배열의 each 메서드는 배열 요소 하나 하나를 블록 파라미터에 넘겨 주면서 블록을 실행시켜 주는 기능을 한다.따라서 블록의 내용에 따라 동일한 배열 객체를 가지고도 서로 다른 작업을 처리할 수 있다. 다시 말하면 배열의 'each' 메서드에 내가 원하는 '작업'을 블록을 통해 전달할 수 있고 메서드 내부에서 알아서 그 '작업'이 처리되도록 블록을 실행시켜 준다는 거다.배열의 'each' 메서드를 이용한 몇 가지 예를 보자.arr = (1..10).to_a.. 2024. 8. 1.
스피드 연산 게임 만들기7 지난 번 글이 이번 '스피드 연산 게임 만들기' 시리즈의 마지막 글일 줄 알았으나 메뉴 처리와 관련된 코드를 개선할 필요가 있다고 판단하여 시리즈를 이어나갈까 한다.생각해 보면 메뉴는 우리가 컴퓨터에서 사용하는 폴더와 많은 부분에서 비슷한 구조를 갖는다. 아래 그림과 같이 폴더 안에는 서로 다른 유형의 파일들 뿐만 아니라 또다른 폴더도 있을 수 있다. 각각의 파일들을 선택해서 실행하면 해당 파일에 맞는 프로그램이 실행되고 폴더를 선택해서 들어가면 다시 폴더 안의 파일이나 폴더들이 보이게 된다. 상위 폴더로 이동도 가능하다.메뉴도 이와 동일하게 하나의 메뉴가 여러 개의 하위 메뉴들을 가질 수 있고 그 하위 메뉴들 중에 어떤 메뉴들은 또다른 하위 메뉴들을 포함하고 있을 수 있다. 하위 메뉴를 포함하지 않는 .. 2024. 7. 31.
스피드 연산 게임 만들기6 오늘은 '스피드 연산 게임 만들기' 시리즈의 마지막 글이 될 것 같다. 우선 정수로 나누어 떨어지는 나눗셈 문제를 추가로 넣은 후 게임 플레이를 irb가 아닌 cmd 창에서 바로 실행할 수 있게 만들려고 한다. 또한 실행 화면에서 게임 시간과 문제를 직접 선택할 수 있는 기능도 넣어보겠다.아래와 같이 먼저 나눗셈 문제를 생성하는 클래스를 만들고 테스트해 보자.class Gugudan def make n1 = rand(2..9) n2 = rand(1..9) ["#{n1} x #{n2} = ", n1 * n2] endendclass Add def make n1 = rand(1..9) n2 = rand(1..9) ["#{n1} + #{n2} = ", n1 + n2] .. 2024. 7. 30.
스피드 연산 게임 만들기5 이번에는 연산 문제는 아니지만 객관식 문제를 풀어볼 수 있게 프로그램을 수정해 보자.우선 5개의 객관식 문제를 아래 처럼 작성하여 game.rb 파일과 같은 위치에 루비문제.txt 파일로 저장하였다.파일에 작성된 내용을 읽어와 문제를 보여주고 답을 맞춰보기 위해서는 파일에 문제와 정답을 작성할 때 일정한 규칙을 갖고 작성을 해야 한다.위의 내용을 보면 문제와 문제 사이에는 빈 라인을 하나씩 주었고 정답은 각 문제의 마지막 줄에 '> ' 와 함께 적었다.이제 위의 문제 파일을 읽어와 문제와 정답 두 요소가 담긴 배열을 반환하는 make 메서드가 있는 클래스를 만들기만 하면 이미 만들어 두었던 Game 클래스를 그대로 사용하여 객관식 문제를 풀 수 있을 것이다.아래 처럼 ChoiceQuiz 라는 클래스를 만.. 2024. 7. 29.