Problem... Stałe i zmienne.

0

Witam! :)

Przejdę do sedna od razu:

Fragmenty kodu:

var
obrazeniazad:integer;
obrazeniaotr:integer;
rathp:integer;

const
sword=5;
axe=7;
ogien=5;
mrok=4;
//munstery
rata=2;
ratd=2;

Następne:

writeln('Walka!');
readln;
writeln('Tura 1 - Twoj atak');
writeln('Twoje HP: ',hp,' Szczur HP: ',rathp);
writeln('Zadajesz obrazenia :',obrazeniazad=random(bron)-random(ratd),' punktow.');
rathp:=rathp-obrazeniazad;
writeln('Otrzymujesz obrazenia :',obrazeniaotr=random(rata)-(random(wy)+random(zbroja)),' punktow.');
hp:=hp-obrazeniaotr;
writeln('Twoje HP: ',hp, ' Szczur HP: ',rathp);
readln;

I wszystko byłoby OK, gdyby nie to że nie wyświetla mi cyferek.

Tzn. w linijce writeln('Twoje HP: ',hp,' Szczur HP: ',rathp); - wyświetla cyfry.
Ale w tych gdzie są liczone obrażenia, to wywala mi: TRUE.

Co zrobić? Of korz, do broni przypisany jest miecz
(bron=sword;)

0

writeln('Zadajesz obrazenia :',obrazeniazad=random(bron)-random(ratd),' punktow.');Nie przypisujesz w ten sposób wartości do obrazeniazad i wypisujesz, a porównujesz 2 wartości obrazeniazad i random(bron)-random(ratd). Wypisuje true kiedy są równe. Nie możesz wykonać przypisywania wartości do argumentu(wewnątrz procedury).

Pamiętaj że w Delphi znakami przypisywania są := a nie = jak w większości języków programowania.

Btw. Pamiętaj o randomize; na początku programu. (tak przezornie ;) )

Proponuję przenieść ten temat do działu newbie.

0

Hm, chodzi mi o Pascala :) Sry, że nie napisałem...

Ale właśnie próbowałem tak zrobić ":=" i wywala mi błąd, że brakuje jakiegoś nawiasu. A jak dam "=" to wszystko przechodzi :/

0
traveler napisał(a)

Hm, chodzi mi o Pascala :) Sry, że nie napisałem...

Ale właśnie próbowałem tak zrobić ":=" i wywala mi błąd, że brakuje jakiegoś nawiasu. A jak dam "=" to wszystko przechodzi :/

Pascal, Delphi są w tym zakresie identyczne.
Musisz wykonać przypisywanie wcześniej.

writeln('Walka!');
readln;
writeln('Tura 1 - Twoj atak');
writeln('Twoje HP: ',hp,' Szczur HP: ',rathp);
brazeniazad:=random(bron)-random(ratd);
writeln('Zadajesz obrazenia :',obrazeniazad,' punktow.');
rathp:=rathp-obrazeniazad;
obrazeniaotr:=random(rata)-(random(wy)+random(zbroja));
writeln('Otrzymujesz obrazenia :',obrazeniaotr,' punktow.');
hp:=hp-obrazeniaotr;
writeln('Twoje HP: ',hp, ' Szczur HP: ',rathp);
readln;
0
obrazeniazad:=random(bron)-random(ratd);
writeln('Zadajesz obrazenia :',obrazeniazad,' punktow.');

Powinno działać.

0

Właśnie sam sobie z tym poradziłem :>

Teraz mam pytanie odnośnie procedur (nie chcę zakładać nowego tematu.). Załóżmy, że mam coś takiego:

procedure proc1;
begin
writeln('heh');
readln;
proc2;
end;

procedure proc2;
begin
writeln('rotfl');
readln;
end;

begin
writeln('go go');
proc1;
end.

Wszystko jest ok. do czasu gdy mnie przeniesie do proc1. Jak usunę to "proc2;" to działa, a jak nie usunę to wtedy wywala mi błąd. A ja chcę przechodzić z procedury w procedurę... da się tak? :>

0

Są dwa rozwiązanie:

  1. Najpierw zadeklaruj procedure "proc2", a dopiero potem "proc1".
  2. Przed "proc1" napisz nagłówek procedury "proc2". Robi się to mniej-więcej tak:
procedure proc2; forward;

procedure proc1;
begin
readln;
proc2;
end;

procedure proc2;
begin
writeln('rotfl');
readln;
end;

chociaż na 100% nie jestem pewien(dawno nie pisałem w TP). Jakby nie działało to przeszukaj ostatnie kilka tematów w tym dziale i w dziale newbie - widziałem temat w którym to było opisane w środe albo czwartek.

0

Ano, pierwszy sposób działa. Wielkie dzięki :*

1 użytkowników online, w tym zalogowanych: 0, gości: 1