Sha256: e8ae908afe42a29e93913ef14fbf1c68fcf9ef2c3631f37450b5f1049fbb18d5

Contents?: true

Size: 1.52 KB

Versions: 3

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true
# coding: utf-8
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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cureutils-1.1.0 lib/cureutils/logic/janken_logic.rb
cureutils-1.0.1 lib/cureutils/logic/janken_logic.rb
cureutils-1.0.0 lib/cureutils/logic/janken_logic.rb