Turbo Pascal
 
Szukanie zaawansowane
   
 
Home Rejestracja FAQ Użytkownicy Grupy Galerie  
 
 

Forum Turbo Pascal Strona Główna Kody źródłowe Adventure
Wyświetl posty z ostatnich:   
       
Napisz nowy temat  Odpowiedz do tematu

Sob 11:27, 11 Lut 2006
Autor Wiadomość
rafael
Administrator



Dołączył: 07 Lut 2006
Posty: 72
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Pszczyna

Temat postu: Adventure

Kod:
program adventure;

{$APPTYPE CONSOLE}

uses
  SysUtils, crt;

type
  Truch = record
    x: integer;
    y: integer;
  end;
  Texp = record
    next: integer;
    nr: integer;
    exp: integer;
    zdobyte: integer;
  end;
  Tpostac = record
    wytrzymalosc: integer;
    wytrzymalosc_max: integer;
    sila: integer;
    zrecznosc: integer;
    imie: string[20];
  end;
  Twrogowie = array[1..10] of Tpostac;

procedure intro;
begin
  writeln('*********************************');
  writeln('*********************************');
  writeln('           ADVENTURE           ');
  writeln('  Copyright 2006 by RAFAEL  ');
  writeln('*********************************');
  writeln('*********************************');
  readln;
  clrscr;
end;

procedure losuj_imie(var wrog: Twrogowie);
var
  numer: byte;
begin
  Randomize;
  numer := Random(10);
  case numer of
    0: wrog[2].imie := 'Mantikora';
    1: wrog[2].imie := 'Jaszczur';
    2: wrog[2].imie := 'Zloty smok';
    3: wrog[2].imie := 'Harpia Wiedzma';
    4: wrog[2].imie := 'Bialy wilk';
    5: wrog[2].imie := 'Tarantula';
    6: wrog[2].imie := 'Wilkolak';
    7: wrog[2].imie := 'Drzewiec';
    8: wrog[2].imie := 'Wilczy jezdziec';
    9: wrog[2].imie := 'Goblin';
  end;
end;

procedure pokaz_woja(postac: Twrogowie; n: byte);
begin
  writeln('Statystyki:   ');
  writeln('Imie:         ', postac[n].imie);
  writeln('Sila:         ', postac[n].sila);
  writeln('Zrecznosc:    ', postac[n].zrecznosc);
  writeln('Wytrzymalosc: ', postac[n].wytrzymalosc,'/',postac[n].wytrzymalosc_max, ' HP');
  writeln;
end;

procedure generuj_przeciwnika(var wrog: Twrogowie; staty: Truch);
begin
  clrscr;
  Randomize;
  if staty.x < 0 then staty.x := staty.x*(-1);
  if staty.y < 0 then staty.y := staty.y*(-1);
  losuj_imie(wrog);
  wrog[2].wytrzymalosc := 10*(staty.x + staty.y) + Random(staty.x + staty.y + 5);
  wrog[2].wytrzymalosc_max := wrog[2].wytrzymalosc;
  wrog[2].sila := 2*staty.x + 2*staty.y + Random(staty.x + staty.y+5);
  wrog[2].zrecznosc := 2*staty.x + 2*staty.y + Random(staty.x + staty.y+5);
end;

procedure doswiadczenie(var dosw: Texp; var woj: Twrogowie);
var
  zrecznosc, sila, wytrzymalosc, i: integer;
begin
  if dosw.nr < 1 then dosw.nr := 1;
  if dosw.next < 100 then dosw.next := 100;
  dosw.exp := dosw.exp + dosw.zdobyte;
  if dosw.exp >= dosw.next then
    begin
      dosw.nr := dosw.nr + 1;
      dosw.next := dosw.next*dosw.nr;
      clrscr;
      writeln('Awansowales na ',dosw.nr,' poziom!!!');
      readln;
      writeln('Otrzymujesz 10 punktow do rozdysponowania!');
      readln;
      repeat
      i := 10;
      write('Zrecznosc: ');  readln(zrecznosc);
      write('Sila: '); readln(sila);
      write('Wytrzymalosc: '); readln(wytrzymalosc);
      i := i - zrecznosc - sila - wytrzymalosc;
      if i < 0 then
      begin
        writeln('Przekroczyles limit dostepnych punktow! Sproboj jeszcze raz ;)');
        readln;
        clrscr;
      end;
      until i >= 0;
      woj[1].wytrzymalosc := woj[1].wytrzymalosc_max + 10*wytrzymalosc;
      woj[1].wytrzymalosc_max := woj[1].wytrzymalosc_max + 10*wytrzymalosc;
      woj[1].sila := woj[1].sila + sila;
      woj[1].zrecznosc := woj[1].zrecznosc + zrecznosc;
      writeln('Twoje nowe staty: ');
      writeln;
      pokaz_woja(woj,1);
    end
  else
    writeln('Do ', dosw.nr+1,' poziomu brakuje Ci: ', dosw.next-dosw.exp, ' expa.');
end;

procedure walka(var wrog: Twrogowie; var dosw: Texp);
var
  s1, s2, zrodlo, wytrz: integer;
begin
  readln;
  Randomize;
  zrodlo := Random(10)+1;
  if zrodlo > 3 then
  begin
  writeln('Zostales zaatakowany!!!');
  pokaz_woja(wrog,1);
  writeln('********** VS ************');
  pokaz_woja(wrog,2);
  repeat
  Randomize;
  s1 := round(0.2*wrog[1].sila) + (Random(round(0.1*wrog[1].sila*wrog[1].zrecznosc)));
  s2 := round(0.2*wrog[2].sila) + (Random(round(0.1*wrog[2].sila*wrog[2].zrecznosc)));
  if s1 > s2 then
    begin
      writeln('Zaatakowales!!! ', wrog[2].imie,' traci: ', s1, ' HP!');
      wrog[2].wytrzymalosc := wrog[2].wytrzymalosc - s1;
    end
  else
    begin
      writeln('Twoj przeciwnik zaatakowal!!! Straciles: ', s2, ' HP!');
      wrog[1].wytrzymalosc := wrog[1].wytrzymalosc - s2;
    end;
  readln;
  until (wrog[1].wytrzymalosc <= 0) or (wrog[2].wytrzymalosc <= 0);
  if wrog[1].wytrzymalosc <= 0 then
    writeln('Zostales pokonany!!!')
  else
    begin
    dosw.zdobyte := wrog[2].sila*wrog[2].zrecznosc;
    writeln('Wygrales walke!!! Zdobyles ',dosw.zdobyte,' exp!');
    readln;
    doswiadczenie(dosw,wrog);
    end;
  end
  else
    begin
      writeln('Trafiles na zrodlo z krystalicznie czysta woda!');
      if wrog[1].wytrzymalosc = wrog[1].wytrzymalosc_max then
        writeln('Nie chce Ci sie pic.')
      else
        begin
          wytrz := wrog[1].wytrzymalosc_max - wrog[1].wytrzymalosc;
          if wytrz > 0.2*wrog[1].wytrzymalosc_max then
          begin
            wrog[1].wytrzymalosc := wrog[1].wytrzymalosc + Round(0.2*wrog[1].wytrzymalosc_max);
            writeln('Napiles sie i zyskales: ',wytrz, ' HP!');
          end
          else
            begin
            wrog[1].wytrzymalosc := wrog[1].wytrzymalosc_max;
            writeln('Napiles sie, masz HP na fula!');
            end;
        end;
    end;
  readln;
  clrscr;
end;

procedure game(postac: Twrogowie);
var
  ruch: Truch;
  kierunek: integer;
  doswiadczenie: Texp;
begin
  doswiadczenie.next := 100;
  doswiadczenie.nr := 1;
  doswiadczenie.exp := 0;
  doswiadczenie.zdobyte := 0;
  ruch.x := 0;
  ruch.y := 0;
  repeat
  writeln('**** (',ruch.x,',',ruch.y,') ****');
  writeln;
  repeat
  write('Wybierz kierunek marszu: "1" - lewo, "3" - prawo, "5" - gora, "2" - dol: ');
  read(kierunek);
  until keypressed;
  if kierunek = 1 then ruch.x := ruch.x - 1
  else
    if kierunek = 2 then ruch.y := ruch.y - 1
    else
      if kierunek = 3 then ruch.x := ruch.x + 1
      else
        if kierunek = 5 then ruch.y := ruch.y + 1
        else
          ruch.x := ruch.x + 1;
  clrscr;
  generuj_przeciwnika(postac, ruch);
  walka(postac,doswiadczenie);
  until postac[1].wytrzymalosc <= 0;
  writeln('KONIEC GRY!!!');
  readln;
end;

procedure tworz_woja(var postac: Twrogowie);
var
  i: integer;
begin
  writeln('Na poczatek stworz swojego woja.');
  writeln('Masz 50 punktow do rozdysponowania. Dobrze sie zastanow w co przypakowac :).');
  readln;
  write('Podaj imie swojego woja: '); readln(postac[1].imie);
  repeat
    i := 50;
    write('Zrecznosc: ');  readln(postac[1].zrecznosc);
    write('Sila: '); readln(postac[1].sila);
    write('Wytrzymalosc: '); readln(postac[1].wytrzymalosc);
    i := i - postac[1].zrecznosc - postac[1].sila - postac[1].wytrzymalosc;
    if i < 0 then
    begin
      writeln('Przekroczyles limit dostepnych punktow! Sproboj jeszcze raz ;)');
      readln;
    end;
    clrscr;
  until i >= 0;
  postac[1].wytrzymalosc := postac[1].wytrzymalosc*10;
  postac[1].wytrzymalosc_max := postac[1].wytrzymalosc;
  pokaz_woja(postac,1);
  clrscr;
end;

var
  wojownik: Twrogowie;
begin
  intro;
  tworz_woja(wojownik);
  game(wojownik);
end.


Aby pobrać plik exe. kliknij :arrow: [link widoczny dla zalogowanych]


Post został pochwalony 0 razy
 
Zobacz profil autora
      Do góry  
Napisz nowy temat  Odpowiedz do tematu

 
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


      Do góry  

Strona 1 z 1
Skocz do:  
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
Avalanche style by What Is Real © 2004
             
Regulamin