1465905544ComputerScience AndroidGame
1465905544ComputerScience AndroidGame
ÎNREGISTRARE DE PROGRAMARE
OMAR ATHMAN
07/02/2020
Cooperatie Breakout Game
În acest proiect, vei dezvolta un joc de tip breakout pentru Games Unlimited. Scopul jocului este
pentru a elimina toate cărămizile cu o minge lovită de jucător. O cărămidă este eliminată odată ce a fost lovită
de mingea jucătorului. Mingea săritură de pe cărămida îndepărtată. Mingea jucătorului este controlată de un
paleta. Mingea ricoș ează din toate marginile, cu excepț ia marginilor de jos. Dacă mingea loveș te marginea de jos a
zona de joc, o viaț ă este pierdută. Un jucător are până la trei vieț i. Dacă toate cărămizile sunt eliminate din
ecranul jucătorului, jocul avansează la următorul nivel. Dacă jucătorul nu mai are vieț i rămase,
jocul s-a terminat. Dacă scorul maxim este în top 10 curent, jocul întreabă jucătorul dacă doreș te să facă o înregistrare pentru
O listă cu scoruri mari este dorită. După fiecare joc jucat, jucătorul ar trebui să vadă ecranul de bun venit.
(detaliat mai jos). O ecran tipic de joc ar putea arăta aș a:
Jocul arată în colț ul din dreapta sus scorul actual, următorul scor pe care jucătorul trebuie să-l depăș ească pentru a
urcă cu o poziț ie în lista de scoruri mari ș i rangul curent în lista de scoruri mari (pe baza
scorul actual). Dacă jucătorul nu este în prezent în top 10, câmpul de rang ar arăta doar „-”. În
în colț ul din dreapta jos, jocul afiș ează nivelul actual al jocului, vieț ile rămase ș i iniț ialele
jucătorul.
Când jucătorul începe un joc, un ecran de bun venit îl lasă pe jucător să selecteze dacă doreș te să
începeț i un joc nou, descărcaț i un nou nivel de pe server printr-o conexiune http, deschideț i un nivel local,
accesaț i regulile jocului sub formă de un ecran de ajutor, vizualizaț i scorurile curente (top 10), sau încheiaț i
joc. Dacă utilizatorul trebuie să aș tepte, de exemplu, în timp ce descarcă un nivel, programul trebuie să
afiș aț i o bară de progres. În mod similar, în cazul circumstanț elor excepț ionale, cum ar fi o indisponibilitate
conexiune la server sau un nivel de joc care nu poate fi iniț iat corespunzător (din cauza unei greș eli în
proiectarea nivelului), programul ar trebui să ofere feedback adecvat jucătorului.
Sarcini suplimentare
Unele cărămizi au bonusuri suplimentare: o cărămidă ar putea împărț i mingea în două sau trei mingi, reduce sau
măreș te paleta jucătorului sau oferă o viaț ă suplimentară.
Fiecare grup trebuie să conceapă cel puț in două niveluri de joc. Un nivel de joc oferă o descriere a
layout pentru cărămizi ș i necesită o modalitate de a stoca cărămizile bonus (vezi mai sus). Fiș ierul nivelului jocului
poate folosi doar măsuri relative pentru a facilita portabilitatea. Fiecare cărămidă este specificată în dimensiuni relative,
adică, x % din lăț imea ecranului ș i y % din înălț imea ecranului. Fiș ierul nivelului jocului trebuie să includă
viteza, direcț ia ș i poziț ia iniț ială a mingii, precum ș i dimensiunea paletei. Poț i presupune că
paddle-ul este în repaus ș i centrat orizontal. Odată ce mai multe echipe au implementat...
versiunea fiș ierului de joc, vom lua cea mai bună ca referinț ă ș i toate celelalte programe ar trebui să
fii capabil să citeș ti în acest fiș ier de joc de referinț ă.
Dacă mingea loveș te o rachetă aflată în repaus, aceasta doar inversează direcț ia mingii în direcț iile x ș i y.
Cu toate acestea, dacă jucătorul mută paleta, viteza orizontală a paletei este adăugată la
componenta orizontală a vitezei mingii.
Provocare suplimentară
Până acum, jocul poate fi jucat doar de un singur jucător. Pentru markeri suplimentari, poț i încerca să proiectezi
o versiune colaborativă a acestui joc în care paleta unui alt jucător se află la opusul
ecranul. Actualizările jocului între cei doi jucători se efectuează printr-o conexiune Bluetooth.
Această sarcină este dificilă deoarece necesită o sincronizare permanentă între cei doi jucători. Dacă
îț i place să duci jocul colaborativ la un alt nivel, chiar ș i 4 jucători ar putea fi conectaț i pentru unul
joc, adică, de fiecare parte a jocului este o paletă a fiecărui jucător participant. Echipa pierde
game until either one of the players has no live left or, if there is a common number of lives for
toț i jucătorii, nu a mai rămas nicio viaț ă pentru echipă.
Cooperatie Breakout Game
Puncte de verificat
Detec ț ia coliziunilor OK
•Toate actualizările sunt OK (scorul curent, vie ț ile, avansarea la următorul nivel, …)
•Ecran de întâmpinare plăcut (de exemplu, o imagine ca fundal) inclusiv ecran de ajutor
•Jocul func ț ionează la diferite rezolu ț ii (de asemenea, în mod portret ș i peisaj)
*
Acest fiș ier va implementa în cele din urmă jocul Breakout.
*/
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
Dimensiunile paletei
private static final int PADDLE_WIDTH = 70;
private static final int PADDLE_HEIGHT = 20;
Viteza mingii
private double vx, vy;
/* Metodă: run() */
/* Rulează programul Breakout. */
public void run() {
pentru(int i=0; i < NTURNS; i++) {
setUpGame();
joacăJoc();
if(brickCounter == 0) {
[Link](false);
printaCâș tigător();
opreș te;
}
dacă (brickCounter > 0) {
eliminaTot();
Cooperatie Breakout Game
}
}
dacă (numărătoareaCărămizilor > 0) {
printGameOver();
}
}
deseneazăRachita();
drawBall();
}
*/
double x = cx - (NBRICKS_PER_ROW*BRICK_WIDTH)/2 -
((NBRICKS_PER_ROW-1)*BRICK_SEP)/2 + coloana*BRICK_WIDTH +
coloană*BRICK_SEP;
următoarele rânduri
*/
[Link](true);
[Link]([Link]Ș U);
}
dacă (row == 2 || row == 3) {
[Link]([Link]);
}
dacă (row == 4 || row == 5) {
[Link]([Link]);
}
dacă (rândul == 6 || rândul == 7) {
[Link]([Link]);
}
dacă (rândul == 8 || rândul == 9) {
[Link]([Link]);
}
}
}
}
//configurare paddle
* locaț ia x a paletei este setată la poziț ia cursorului minus jumătate din lungimea paletei
lăț ime
* ș i înălț imea rămâne aceeaș i
*/
dacă (([Link]() < getWidth() - PADDLE_WIDTH/2) && ([Link]() >
PADDLE_WIDTH/2)) {
[Link]([Link]() - PADDLE_WIDTH/2, getHeight() -
PADDLE_Y_OFFSET - PADDLE_HEIGHT);
}
//setarea mingii
private void deseneazaMinge() {
mutăMinge();
dacă ([Link]() >= obț ineÎnălț imea()) {
opreș te;
}
if(brickCounter == 0) {
sparge;
}
}
}
dacă ([Link](0.5)) {
vx = -vx;
}
trebuie să obț inem vx ș i vy în punctul cel mai apropiat de 0 sau de celălalt capăt
* astfel încât să nu ajungă niciodată exact la înălț imea la care mingea loveș te
rachetă (înălț imea rachetei + înălț imea mingii),
* prin urmare, estimez că punctul este mai mare sau egal cu înălț imea la
cu care mingea loveș te racheta,
* dar mai puț in decât înălț imea unde mingea loveș te paleta minus 4.
*/
}
altfel dacă (getElementAt( ([Link]() + BALL_RADIUS*2), [Link]()) != null ) {
return getElementAt([Link]() + BALL_RADIUS*2, [Link]());
}
altfel dacă(getElementAt([Link](), ([Link]() + BALL_RADIUS*2)) != null ) {
return getElementAt([Link](), [Link]() + BALL_RADIUS*2);
}
altfel dacă(getElementAt(([Link]() + RAZA_MINGII*2), ([Link]() +
BALL_RADIUS*2)) != null ){
returnează getElementAt([Link]() + BALL_RADIUS*2, [Link]() +
RADIUS_BOL*2);
}
//need to return null if there are no objects present
altfel{
returnează null;
[Link](-[Link]()/2, -[Link]());
[Link]([Link]);
adauga (Câș tigător);
}
}