rafal92909 Napisano Listopad 3, 2010 Zgłoś Share Napisano Listopad 3, 2010 witam wszystkich napisałem oto taka grę w statki tylko chciałem żeby po skończonej grze zawsze zapisywał się wynik do pliku tekstowego a przy uruchomieniu gry pytał czy wczytać grę czy zagrać nowa. I w sumie wszystko już działa tylko jest problem z tym zapisywaniem i wczytywaniem... program p1; uses crt; type T2W=array [0..11,0..11] of integer; var x,y,i,j,w:integer; Tk,Tg:T2W; n:char; p,p2:file of integer; procedure ZERUJ(var T:T2W); var i,j:integer; begin for i:=0 to 11 do for j:=0 to 11 do T[i,j]:=0; end; procedure PISZT2(m,n:integer;T:T2W); var i,j:integer; begin writeln(); for i:=1 to n do begin for j:=1 to m do begin case T[i,j] of 1..4: write('x'); 7: begin textcolor(green); write('-'); textcolor(white); end; 8,0:write('.'); 5: begin textcolor(red); write('*'); textcolor(white); end; end; end; writeln(); end; end; procedure los4(var T:T2W); var k,x,y,i,j:integer; begin k:=random(2); if k=0 then begin x:=random(7)+1; y:=random(10)+1; for i:=x-1 to x+4 do for j:=y-1 to y+1 do T[i,j]:=8; for i:=0 to 3 do T[x+i,y]:=4; end else begin x:=random(10)+1; y:=random(7)+1; for i:=x-1 to x+1 do for j:=y-1 to y+4 do T[i,j]:=8; for i:=0 to 3 do T[x,y+i]:=4; end; end; procedure los3(var T:T2W); var k,x,y,i,j:integer; begin k:=random(2); case k of 0:begin repeat x:=random(8)+1; y:=random(10)+1; until (T[x,y]=0) and (T[x+1,y]=0) and (T[x+2,y]=0); for i:=x-1 to x+3 do for j:=y-1 to y+1 do T[i,j]:=8; for i:=0 to 2 do T[x+i,y]:=3; end; 1:begin repeat x:=random(10)+1; y:=random(8)+1; until (T[x,y]=0) and (T[x,y+1]=0) and (T[x,y+2]=0); for i:=x-1 to x+1 do for j:=y-1 to y+3 do T[i,j]:=8; for i:=0 to 2 do T[x,y+i]:=3; end; end; end; procedure los2(var T:T2W); var k,x,y,i,j:integer; begin k:=random(2); case k of 0:begin repeat x:=random(9)+1; y:=random(10)+1; until (T[x,y]=0) and (T[x+1,y]=0); for i:=x-1 to x+2 do for j:=y-1 to y+1 do T[i,j]:=8; for i:=0 to 1 do T[x+i,y]:=2; end; 1:begin repeat x:=random(10)+1; y:=random(9)+1; until (T[x,y]=0) and (T[x,y+1]=0); for i:=x-1 to x+1 do for j:=y-1 to y+2 do T[i,j]:=8; for i:=0 to 1 do T[x,y+i]:=2; end; end; end; procedure los1(var T:T2W); var x,y,i,j:integer; begin repeat x:=random(10)+1; y:=random(10)+1; until (T[x,y]=0); for i:=x-1 to x+1 do for j:=y-1 to y+1 do T[i,j]:=8; T[x,y]:=1; end; begin randomize; textcolor(white); writeln('Chcesz wczytac zapisana gre? T/N'); readln(n); case n of 'n','N':begin clrscr; writeln('Tablica gracza 1: '); ZERUJ(Tg); los4(Tg); los3(Tg); los3(Tg); los2(Tg); los2(Tg); los2(Tg); los1(Tg); los1(Tg); los1(Tg); los1(Tg); writeln(); writeln(); writeln('Tablica komputera: '); ZERUJ(Tk); los4(Tk); los3(Tk); los3(Tk); los3(Tk); los2(Tk); los2(Tk); los2(Tk); los1(Tk); los1(Tk); los1(Tk); los1(Tk); repeat clrscr; writeln('Tablica gracza 1: '); PISZT2(10,10,Tg); writeln(); writeln('Tablica komputera: '); writeln(); PISZT2(10,10,Tk); writeln(); writeln('Podaj 1 wspolrzedna'); readln(y); writeln('Podaj 2 wspolrzedna'); readln(x); case Tk[x,y] of 1..4:Tk[x,y]:=5; 8,0:Tk[x,y]:=7; end; x:=random(9)+1; y:=random(9)+1; case Tg[x,y] of 1..4:Tg[x,y]:=5; 8,0:Tg[x,y]:=7; end; writeln('Tablica gracza 1: '); PISZT2(10,10,Tg); writeln('Tablica komputera: '); writeln(); PISZT2(10,10,Tk); writeln ('Czy chcesz jeszcze raz? T/N'); n:=upcase(readkey); until (upcase(n)='N'); end; 't','T':begin clrscr; assign(p,'C:\statkig.txt'); reset(p); for i:=1 to 10 do begin for j:=1 to 10 do begin read(p,w); Tg[i,j]:=w; end; end; close(p); assign(p2,'C:\statkik.txt'); reset(p2); for i:=1 to 10 do begin for j:=1 to 10 do begin read(p,w); Tk[i,j]:=w; end; end; close(p2); repeat clrscr; writeln('Tablica gracza 1: '); PISZT2(10,10,Tg); writeln(); writeln('Tablica komputera: '); writeln(); PISZT2(10,10,Tk); writeln(); writeln('Podaj 1 wspolrzedna'); readln(y); writeln('Podaj 2 wspolrzedna'); readln(x); case Tk[x,y] of 1..4:Tk[x,y]:=5; 8,0:Tk[x,y]:=7; end; x:=random(9)+1; y:=random(9)+1; case Tg[x,y] of 1..4:Tg[x,y]:=5; 8,0:Tg[x,y]:=7; end; writeln('Tablica gracza 1: '); PISZT2(10,10,Tg); writeln('Tablica komputera: '); writeln(); PISZT2(10,10,Tk); writeln ('Czy chcesz jeszcze raz? T/N'); n:=upcase(readkey); until (upcase(n)='N'); end; end; assign(p,'C:\statkig.txt'); rewrite(p); for i:=1 to 10 do begin for j:=1 to 10 do begin read(w); Tg[i,j]:=w; write(p,w); end; writeln(); end; close(p); assign(p2,'C:\statkik.txt'); rewrite(p2); for i:=1 to 10 do begin for j:=1 to 10 do begin read(w); Tk[i,j]:=w; write(p,w); end; writeln(); end; close(p2); end. czy mógłby ktoś "rzucić okiem" i powiedzieć co jest nie tak ze nie chce mi poprawnie zapisać do pliku? Link do komentarza Udostępnij na innych stronach More sharing options...
Adam27 Napisano Listopad 3, 2010 Zgłoś Share Napisano Listopad 3, 2010 Po pierwsze: naucz się pisać kod tak, żeby dało się go zrozumieć - rób przynajmniej wcięcia. Po drugie: po co wklejasz cały program, skoro wiesz, że problem jest tylko z zapisywaniem do pliku? Po trzecie: ustawiłeś sobie breakpointa i sprawdziłeś, czy wszystko idzie tak jak powinno? Jak sam odkryjesz błąd, więcej się nauczysz. Po czwarte: Pascal nie jest do pisania gier. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link do komentarza Udostępnij na innych stronach More sharing options...
jozekkg Napisano Listopad 4, 2010 Zgłoś Share Napisano Listopad 4, 2010 Proponuję stworzyć jeden plik, w którym zapiszesz tablice TK i TG. var p : file of T2W; begin {...} write(p,tk); write(p,tg); {...} end. ; Jeszcze tylko jedna uwaga - Zawsze mnie uczono, że rozszerzenie .txt jest zarezerwowane dla plików tekstowych. No ale ja już wapniak jestem Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.