Witam
Proszę o sprawdzenie poniższego kodu.
Gracz wybiera pole wpisując cyfrę od 1 do 9. Niestety po wpisaniu cyfry w linijce 122 pojawia się błąd. Pewnie jest ich więcej, ale zostaną odkryte dopiero po poprawieniu tego błędu. (W kodzie C++ było coś takiego “int komputer(char t[], char &gracz)” - ja napisałam w Ruby’m to: w linii 110 “def komputer t, gracz” - dobrze? )
[code]t=[10]
@gracz
@wybor
print “\nGra w Kolko i Krzyzyk dla gracza i komputera\n============================================\n\n”;
(1…9).each do |i|
t[i]=’ ’
end
gracz=‘O’
def plansza t
(1…5).each do |i|
print " " ,t[i], " "
if i==1||i==3||i==5
print “| |”
elsif i != 9
print “\n—±–±--\n”
else
print “\n\n”
end
end
end
def wygrana t, g, cisza
@i
test=false
(1..7).each do |i|
test ||=t[i]==g && t[i+1]==g && t[i+2]==g
i=i+2
end
(1..3).each do |i|
test ||=t[i] == g && t[i+3] == g && t[i+6] == g
end
test ||=t[1] == g && t[5] == g && t[9] == g
test ||= t[3] == g && t[5] == g && t[7] == g
if test==true
if !cisza
plansza t
print "\nGracz" , g , "WYGRYWA\n"
end
end
test=false
end
def remis t, cisza
(1…9).each do |i|
if t[i]==’ ’
cisza=false
end
end
if cisza==true
plansza(t)
print "REMIS\n"
end
end
def minimax t, gracz
@m
@mmx
if(wygrana(t,gracz,true))
(gracz == 'X') ? 1 : -1
end
if (remis(t,true))
end
gracz=(gracz=='X') ? 'O' : 'X'
mmx= (gracz == 'O') ? 10 : -10
(1..9).each do |i|
if t[i] == ' '
t[i]=gracz
m=minimax(t,gracz)
t[i]=' '
if (gracz=='O' && m<mmx) || (gracz=='X' && m>mmx)
mmx=m
end
end
end
end
def komputer t
@ruch
@i
@m
mmx=-10
(1..9).each do |i|
if t[i]==' '
t[i]='X'
m=minimax(t, 'X')
t[i]=' '
if m>mmx
mmx=m
ruch=i
end
end
end
end
def komputer t, gracz
@r
plansza t
if gracz=='O'
print "\n\nGracz wybiera ruch:"
r=$stdin.gets
elsif
r=komputer(t)
print "\n\nKomputer wybiera ruch" , r
end
print "---------------------------\n\n"
if r>=1 && r<=9 && t[r]==' '
t[r]=gracz
end
gracz=(gracz == 'O') ? 'X' : 'O'
end
while(!wygrana(t,‘X’,false) && !wygrana(t,‘O’,false) && !remis(t,false))
komputer t, gracz
end
print "Jeszcze raz ? (T = TAK) : "
wybor=$stdin.gets
print “\n\n\n”[/code]