2016-08-27 3 views
-1

私は、ロック、紙、はさみのゲームを構築しようとしています。誰か私に教えてください、または私がこのコードで間違っているの正しい方向に私を指摘してもらえますか?メソッド内の変数をインクリメントしますか?

players_scorecpu_scoreの変数は、いずれか1つがラウンドを獲得するたびに1だけ増分します。

choice = ["rock", "paper", "Scissors"] 

players_score = 0 
cpu_score = 0 


def win_lose(a,b,c,d) 

    if a == "rock" && b == "scissors" 
     c+=1 
     puts "YOU WIN!!" 

    elsif a == "scissors" && b == "rock" 
     d+=1 
     puts "YOU LOSE!!" 

    elsif a =="paper" && b == "rock" 
     c+=1 
     puts "YOU WIN!!" 

    elsif a =="rock" && b == "paper" 
     d+=1 
     puts "YOU LOSE!!" 

    elsif a == "scissors" && b == "paper" 
     c+=1 
     puts "YOU WIN!!" 

    elsif a == "paper" && b == "scissors" 
     d+=1 
     puts "YOU LOSE!!" 

    else a == b 
     puts "Its a Draw this time!!" 
    end 

end 

while players_score < 2 && cpu_score < 2 


    print "Lets play. Plese choose rock, paper or scissors: " 
    players = gets.chomp.downcase 
    puts "You have #{players}" 

    cpu = choice.sample.downcase 
    puts "Computer has #{cpu}" 

    win_lose(players, cpu, players_score, cpu_score) 
    puts "scores are player #{players_score} , cpu #{cpu_score}" 
end 

答えて

0

戻りwin_loseから値、および例えば、インクリメントに変数を決定するためにそれを使用:

def win_lose(a,b,c,d) 
    if a == "rock" && b == "scissors" 
     c+=1 
     winner = 'player' 
    elsif a == "scissors" && b == "rock" 
     d+=1 
     winner = 'computer' 
    # [.. etc ..] 
    else a == b 
     winner = 'draw' 
    end 

    return winner 
end 

player_score = 0 
cpu_score = 0 
choice = ["rock", "paper", "Scissors"] 

while players_score < 2 && cpu_score < 2 
    print "Lets play. Plese choose rock, paper or scissors: " 
    players = gets.chomp.downcase 
    puts "You have #{players}" 

    cpu = choice.sample.downcase 
    puts "Computer has #{cpu}" 

    winner = win_lose(players, cpu, players_score, cpu_score) 
    if winner == 'player' 
     player_score += 1 
     puts "YOU WIN!!" 
    elsif winner == 'computer' 
     cpu_score += 1 
     puts "YOU LOSE!!" 
    else 
     puts "It's a draw" 
    end 

    puts "scores are player #{players_score} , cpu #{cpu_score}" 
end 

あなたが見ることができるように、これはまた、あなたが同じ「YOU WINを繰り返さないことができます! "何度も繰り返します。むしろのものよりも、勝者や敗者を決める:このを知らせる、勝者や敗者を決める私はwin_lose関数の外でこの機能だけことを行うようにすることを移動しました。

このような小さなプログラムでは、この区別は重要ではないかもしれませんが、プログラムが成長するにつれてプログラムを理解しておくことが重要になります。

関連する問題