Laborator FAIMA #2 / An 1 Semestru 1

Înainte de toate, câteva linkuri promise, unde puteți găsi documentație pentru programare în general, cu aplicare la limbajul Java:

Thinking in Java de Bruce Eckel
Roxie's Bleeding at the Keyboard
Introduction to Programming Using Java de David Eck

Biblioteca UPB este de asemenea o sursă excelentă, mai ales pentru manuale în limba română.

Problema de azi:

Greuceanu și Zmeul se încaieră. Procedeul este că fiecare, când îi vine rândul, își ia adversarul în brațe și îl înfige în pământ, fie până la genunchi (1), fie până la brâu (2), fie până la gât (3), fie nu reușește deloc (0). Dacă unul dintre combatanți reușește să îl înfigă pe celălalt în pământ până la gât, îi taie capul și lupta se termină. Dacă cei doi rezista 100 de runde (fiecare) fără victoria vreunuia, se întorc fiecare acasă cu rezultat de egalitate. Se aplică următoarele constrângeri:

  • Atac normal: la rândul lui, un combatant dă cu zarul: 1 înseamna ratare (0), 6 înseamnă victorie (3); 2 și 3 înseamnă (1); 4 și 5 înseamnă (2)
  • Contraatac: dacă, într-o rundă, un combatant a ratat (0), celălalt obține bonus +1 la rezultatul său imediat următor
  • Apa vie: un combatant aflat în situația de a pierde, are voie sa dea cu zarul: dacă dă 5 sau 6, corbul îi aduce apă vie și îl salvează. Apa vie poate fi folosită o singură dată de către un combatant
  • Măscărici: înainte de fiecare atac povestitorul dă cu zarul. Dacă rezultatul este 6, în scenă apare măscăriciul, care inversează toate zarurile pentru următoarele 4 atacuri (inclusiv cel curent): e.g. 6 devine 1, 2 devine 5; în timpul acestor atacuri, povestitorul nu mai dă cu zarul, pentru că măscăriciul e deja în scenă
  • Începe Greuceanu

Hint: pentru a obține un număr aleator pentru zar (+0.5p pentru cine știe de ce 'număr aleator pentru zar' e o eroare lingvistică), puteți folosi următoarea expresie:

private static final int MAX=6;
...
//Math.random() returneaza o valoare rațională aleatorie în intervalul (0,1)
//(int)(ceva) încearcă să convertească 'ceva' la tipul de date int (întreg)
//Dacă 'ceva' e un număr rațional, reușește; dacă însă e String de exemplu, rezultă o eroare
int zar= (int)(Math.random() * MAX) + 1;

0 comentarii: