ruby分かる奴助けてくれ

1void2018/01/28(日) 02:19:12.63
汚いコードですまない

# coding: windows-31j
STDOUT.sync = true

def elo(ra, rb, s)#イロレーティング raは

k = 24
rab = ra - rb
rab /= 400
rab *= -1
eab = 10 ** rab
eab += 1
eab = eab ** -1 #期待勝率を求める。

ra = ra + k * (s - eab)#レートの変動

return ra
end

2仕様書無しさん2018/01/28(日) 02:19:32.92
user = Struct.new(:name, :rate, :mat, :win, :lose, :drow);

player = Array.new;
frate = 2000;
i = 0;
a = 0;

while (i == 0) do
printf("プレイヤー名を入力してください>>");
na = gets;
player << user.new(na, frate, 0, 0, 0, 0);

printf("あなたのプレイヤーナンバーは%dです",a + 1);
a += 1

printf("登録を続けますか?\nYes >> 0 No>> 1");
i = gets.to_i;
end

3仕様書無しさん2018/01/28(日) 02:20:55.96
g = 0
while (g != 1) do
printf("勝利したプレイヤーを入力してください>>");
na = gets;
a = 0
x = 0
while (x != 1) do
if player[a].name == na
x = 1
elsif player[a] == nil
printf("プレイヤーが見つかりませんでした");
x = 1
else
a += 1
end
end
player[a].mat += 1
player[a].win += 1
b = 0
x = 0

4void2018/01/28(日) 02:21:16.93
printf("敗北したプレイヤーを入力してください>>");
na = gets;
while (x != 1) do
if player[b].name == na
x = 1
elsif player[b] == nil
printf("プレイヤーが見つかりませんでした");
x = 1
else
b += 1
end
end
player[b].mat += 1
player[b].lose += 1
tmp = player[a].rate
player[a].rate = elo(player[a].rate, player[b].rate, 1)
player[b].rate = elo(player[b].rate, tmp, 0)
printf("%d\n", player[a].rate)
printf("%d\n", player[b].rate)
printf("%d %d %d", player[a].mat, player[a].win, player[a].lose )
printf("%d %d %d", player[b].mat, player[b].win, player[b].lose )
printf("続けますか?\nYes >> 0 No>> 1");
g = gets.to_i;
end

5仕様書無しさん2018/01/28(日) 02:21:59.65
>>3
>>4
のwhileの中身をメソッド化して
while (g != 1) do
rating
printf("続けますか?\nYes >> 0 No>> 1");
g = gets.to_i;
end
みたいにしたいんだが
`rating': undefined local variable or method `player' for main:Object (NameError)
といわれる

6void2018/01/28(日) 02:22:29.01
コテハン忘れまくりだな

7仕様書無しさん2018/01/28(日) 08:14:30.93

8仕様書無しさん2018/01/28(日) 14:49:41.35

9仕様書無しさん2018/01/28(日) 15:29:50.73
>>1
Rubyのことなら草加企業の草加プログラマに聞けよ
草加専用言語だから

10仕様書無しさん2018/01/29(月) 06:33:53.15
見にくいからgistでやれ

新着レスの表示
レスを投稿する