# frozen_string_literal: true require 'cureutils/logic/base_logic' # # Class of Pikarin Janken # class JankenLogic < BaseLogic def initialize super # Set the sleep time 0 Rubicure::Girl.sleep_sec = 0 # 0: win, 1: lose, 2: aiko @result_table = [[2, 0, 1, 1], [1, 2, 0, 1], [0, 1, 2, 1], [0, 0, 0, 2]] @result_idx = %w[あなたのかち あなたのまけ あいこ] @te_idx = %w[グー チョキ パー グッチョッパー] @te_hash = Hash[[@te_idx, (0..3).map(&:to_s)].transpose] @buf = [] end attr_writer :io def puts(input) @buf << input end def janken Cure.peace.io = self Cure.peace.janken @buf[0..1].each do |msg| @out.puts msg end judge end def generated_te @buf.last =~ /(#{@te_idx.join('|')})/ @te_hash[Regexp.last_match(1)].to_i end def input_te @out.print('1...グー, 2...チョキ, 3...パー : ') # TODO: Check input and raise the error. player_te = $stdin.gets player_te.to_i - 1 end def judge cure_te = generated_te player_te = input_te result_num = @result_table[player_te][cure_te] result = @result_idx[result_num] print_results(@te_idx[player_te], @te_idx[cure_te], result) result_num end def print_results(player_te, cure_te, result) @out.puts @out.puts 'あなた: ' + player_te @out.puts 'キュアピース: ' + cure_te @out.puts @out.puts '[結果]' @out.puts result end end