Forum of Horatiu Roman - Enjoy
 
AcasaAcasa  CalendarCalendar  FAQFAQ  CautareCautare  InregistrareInregistrare  MembriMembri  GrupuriGrupuri  Harta vizitatorilorHarta vizitatorilor  Conectare  
Conectare
Utilizator:
Parola:
Conectare automata: 
:: Mi-am uitat parola
Cautare
 
 

Rezultate pe:
 
Rechercher Cautare avansata
Ultimele subiecte
» pacat ca acest forum nu mai este activ
Scris de crr_ro 12th Septembrie 2016, 3:42 pm

» CULOAREA VIETII
Scris de EUGEN 19th Iunie 2012, 3:43 pm

» Povestea lui Iov
Scris de Genesis 7th Aprilie 2011, 8:50 am

» transpun.txt
Scris de Horace 24th Ianuarie 2011, 7:32 am

» MAZEGAME
Scris de Horace 2nd Iunie 2010, 1:31 pm

» nebunie
Scris de Vizitator 24th Februarie 2010, 8:50 am

Cine este conectat?
In total este 1 utilizator conectat: 0 Inregistrati, 0 Invizibil si 1 Vizitator

Nici unul

Recordul de utilizatori conectati a fost de 13, 5th Iunie 2009, 12:33 am
Statistici
Avem 57 membri inregistrati
Cel mai nou utilizator inregistrat este: alinatim

Membrii nostri au postat un numar de 1064 mesaje în 108 subiecte

Distribuiți | 
 

 proiect nou: space shooter

Vezi subiectul anterior Vezi subiectul urmator In jos 
AutorMesaj
Horace
Admin
Admin
avatar

masculin Numarul mesajelor : 298
Varsta : 24
Muzica : psihedelica
Reputatie : 10
Data de inscriere : 12/05/2007

MesajSubiect: proiect nou: space shooter   6th Ianuarie 2010, 8:38 am

am o idee noua de joc in pascal

space shooter

modelul clasic, o nava jos care poate sa traga si multe nave mici slabe inamice in partea de sus, care se misca incet si le poti nimici destul de usor.

va fi un joc cu niveluri prestabilite cel mai probabil desi poate voi pune si un mod haotic in care apar ciudatenii.

oricum aici va voi tine la curent cu progresul proiectului.

in acelasi timp, aici voi pune codul sursa sa nu uit cumva de el. si sa il pot accesa mai usor cand sunt la scoala si vreau sa lucrez la joc.

Cod:

program joc_space;
{
autor: Horatiu Roman.
versiune: 0.0
}
uses crt,dos;
type
    enemy=record
      typ:byte;
      posx,posy:byte;
      end;
    player=record
      pos:byte;
      power:byte;
      end;

const
screen_vsize=50;
screen_hsize=80;
menu_hsize=20;


var
k:char;
keystep,exit,exit3:boolean;
ship:player;
btest:enemy;
i:word;
score:longint;
scores:array [1..10] of integer;
scoresn:array [1..10] of string;
initpos,maxpos,minpos:byte;
speed:word;{cate sec/100 sta pe step}


procedure writescores;
var f:text;
i:byte;
begin
assign(f,'space.res');
rewrite(f);
for i:=1 to 10 do begin
  writeln(f,scores[i]);
  writeln(f,scoresn[i]);
  end;
close(f);
end;





procedure readscores(var rst:boolean);
var f:text;
i:byte;
err:integer;
begin
assign(f,'space.res');
{$I-}
reset(f);
{$I+}
err:=IOResult;
if err<>0 then
  begin
  clrscr;
  writeln('Error ',err,' occured. Ask adult for help.');
  delay(2500);
  end;
if err=2 then
  begin
  rewrite(f);
  close(f);
  reset(f);
  writescores;
  rst:=true;
  end
  else
  rst:=false;
for i:=1 to 10 do begin
  readln(f,scores[i]);
  readln(f,scoresn[i]);
  end;
close(f);
end;



procedure initenemy(e:enemy; x,y:byte; t:byte);
begin
e.posx:=x;
e.posy:=y;
e.typ:=t;
end;


procedure init;
var rst:boolean;
begin
rst:=false;
repeat
textmode(CO80+Font8x8);
textcolor(white);
exit:=false;
exit3:=false;
score:=0;
minpos:=3;
maxpos:=screen_hsize-menu_hsize-3;
initpos:=(maxpos+minpos) div 2;
speed:=50;
readscores(rst);


initenemy(btest,initpos,20,1);
ship.pos:=initpos;
until rst=false;
end;


procedure clrscr2(x1,y1,x2,y2:byte);
var i,j:byte;
begin
for i:=x1 to x2 do
  for j:=y1 to y2 do begin
    gotoxy(i,j); write(' ');
    end;
end;




procedure showscores;
var i:byte;
begin
clrscr2(2,2,screen_hsize-menu_hsize-2,screen_vsize-2);
gotoxy((screen_hsize-menu_hsize) div 2 - 7,5); write('Highscores list');
for i:=1 to 10 do begin
  gotoxy(trunc((screen_hsize-menu_hsize)/7),10+i); write(scoresn[i]);
  gotoxy(trunc((screen_hsize-menu_hsize)*6/7),10+i); write(scores[i]);
  end;
end;




procedure gameover;
var str: string[10];
i,j:byte;
weak:boolean;
begin
clrscr2(2,2,screen_hsize-menu_hsize-1,screen_vsize-1);
gotoxy(trunc((screen_hsize-menu_hsize)/7),screen_vsize div 2);
textcolor(red);
write('Game is over, you are dead');
gotoxy(trunc((screen_hsize-menu_hsize)/7),screen_vsize div 2+1);
write('Please enter name: ');textcolor(white);
readln(str);
gotoxy(trunc((screen_hsize-menu_hsize)/7),screen_vsize div 2+2); textcolor(red);
weak:=true;
for i:=1 to 10 do begin
  if score>scores[i] then begin
                          for j:=10 downto i+1 do begin
                              scores[j]:=scores[j-1];
                              scoresn[j]:=scoresn[j-1];
                              end;
                          scores[i]:=score;
                          scoresn[i]:=str;
                          weak:=false;
                          break;
                          end;
  end;
if weak then i:=11;
case i of
1: write(str,' is the new champion!!!');
2..3: write(str,' is in the top 3!!');
4..9: write(str,' is in the highscores!');
10: write(str,' was quite lucky.');
11: if screen_hsize-menu_hsize>30 then write('My grandma plays better than ',str) else write(str,' sucks');
end;
    sound(340);delay(100);nosound;
    sound(380);delay(100);nosound;
    sound(420);delay(100);nosound;
    sound(445);delay(160);nosound;
    delay(700);

writescores;
exit:=true;
showscores;
gotoxy(trunc((screen_hsize-menu_hsize)*2/7),screen_vsize-2);write('Exit? (esc)');
if readkey=#27 then exit3:=true;
end;


procedure keys;
begin
k:=readkey;
case k of
  #27: begin
      exit:=true; exit3:=true; gotoxy(20,20); textcolor(red); writeln('Exiting');
      end;
  {ad}
  'd': if ship.pos<maxpos then inc(ship.pos);
  'a': if ship.pos>minpos then dec(ship.pos);
  {numpad}
  '6': if ship.pos<maxpos then inc(ship.pos);
  '4': if ship.pos>minpos then dec(ship.pos);
  end;
  keystep:=false;
end;



procedure drawmenu;
var i:byte;
begin
clrscr;
for i:=2 to screen_vsize do begin
  gotoxy(screen_hsize-menu_hsize,i);write(char(ord(186))); { mijloc vertical }
  end;
for i:=2 to screen_hsize-1 do begin
  gotoxy(i,1);write(char(ord(205)));          { linia sus }
  gotoxy(i,screen_vsize);write(char(ord(205)));        { linia jos }
  end;
gotoxy(screen_hsize-menu_hsize,1);write(char(ord(203)));    {mijloc sus}
gotoxy(1,1);write(char(ord(201)));    {  sus stg }
for i:=2 to screen_vsize-1 do begin
  gotoxy(1,i);write(char(ord(186)));        {linia stg }
  gotoxy(screen_hsize-1,i);write(char(ord(186)));        { linia dr }
  end;
gotoxy(1,screen_vsize);write(char(ord(200)));          { stg  jos }
gotoxy(screen_hsize-1,screen_vsize);write(char(ord(188)));          {  dr jos  }
gotoxy(screen_hsize-1,1);write(char(ord(187)));          {  dr sus  }
gotoxy(screen_hsize-menu_hsize,screen_vsize);write(char(ord(202)));          {mijloc jos}

gotoxy(screen_hsize-menu_hsize+menu_hsize div 2-3,7);write('SPACE'); {titlu}

gotoxy(screen_hsize-menu_hsize+menu_hsize div 2-4,9);write('Speed:');    {69,9 - viteza    }
gotoxy(screen_hsize-menu_hsize+menu_hsize div 2-4,10);write('Length:');  {70,10 - lungimea  }
gotoxy(screen_hsize-menu_hsize+menu_hsize div 2-4,11);write('Score:');  {69,11 - scor      }
gotoxy(screen_hsize-menu_hsize+menu_hsize div 2-5,13);write('Alt+Enter');
gotoxy(screen_hsize-menu_hsize+menu_hsize div 2-5,14);write('Fullscreen');
textcolor(darkgray);
if screen_vsize>=40 then begin
gotoxy(screen_hsize-menu_hsize+1,30);write('    controls:    ');
gotoxy(screen_hsize-menu_hsize+1,31);write('  (numlock on)  ');
gotoxy(screen_hsize-menu_hsize+1,32);write('    ');
gotoxy(screen_hsize-menu_hsize+1,33);write('  4, a  =  stg  ');
gotoxy(screen_hsize-menu_hsize+1,34);write('  6, d  =  dr.  ');
gotoxy(screen_hsize-menu_hsize+1,35);write('    ');
gotoxy(screen_hsize-menu_hsize+1,36);write('    ');
gotoxy(screen_hsize-menu_hsize+1,37);write('    ');
gotoxy(screen_hsize-menu_hsize+1,38);write('    ');
gotoxy(screen_hsize-menu_hsize+1,39);write('    ');
end;
gotoxy(20,20);
end;



procedure drawship(x,y:byte);

begin
gotoxy(x,y);
case ship.power of
1: write(char('H'));
else write(char('H'));
end;
end;


procedure drawenemy(e:enemy);
begin
gotoxy(e.posx,e.posy);
case e.typ of
1: write(char(1));

end;





procedure draw;
var i:word;
begin
drawship(ship.pos,screen_vsize-3);
{score}
gotoxy(screen_hsize-menu_hsize+menu_hsize div 2+3,11);write(score,'  ');

gotoxy(screen_hsize-3,screen_vsize-2);
end;



procedure step;
var i:word;
hour,min,sec,s,s2:word;
begin
gettime(hour,min,sec,s);
repeat
if keypressed then keys;
gettime(hour,min,sec,s2);
until (s2>s+speed) or exit3;
draw;
end;






begin
randomize;
repeat
init;
drawmenu;
repeat
step;
until exit;

until exit3;
end.



codul a pornit de la scheletul tip de la jocul snake. din nou insist, am facut tot codul singur, nu am copiat de nicaieri asa ca va rog, daca copiati ceva de aici sa nu ziceti ca ati pus coada la pruna ca nu-i adevarat si nu-i corect. eu am pus-o de data asta.

succese.

_________________
de obicei nu am dreptate. dovedeste!
Sus In jos
Vezi profilul utilizatorului http://horacehomepage.great-forum.com
 
proiect nou: space shooter
Vezi subiectul anterior Vezi subiectul urmator Sus 
Pagina 1 din 1
 Subiecte similare
-
» Proiect Femina Cap 1
» Din materiale reciclabile
» Proiect pentru copii - Martisoare
» Proiecte crosetate in lucru
» Pentru constanteni - proiect cu finantare europeana si subventie

Permisiunile acestui forum:Nu puteti raspunde la subiectele acestui forum
Forum || Horace Homepage :: Discutii :: Informatica si calculatoare-
Mergi direct la: