Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  SNAKE GAME
Language: PASCAL
Code:
Program had;
Uses crt,dos,sysutils;
Var a,b,maxx,maxy,posx,posy,y,razeni: integer;
  h,m,s,hs: word;
  sx,sy,zx,zy: integer;
  snezeno : boolean;
  polex: array[1..999] Of integer;
  poley: array[1..999] Of integer;
  p: char;
Procedure ctverec(sirka:integer;vyska:integer);
Var x,y: integer;
Begin
  x := 1;
  y := 1;
  maxx := sirka;
  maxy := vyska;
  gotoxy(1,1);
  Repeat
    //    delay(100);
    gotoxy(x,1);
    write('+');
    x := x+1;
  Until x = maxx;
  gotoxy(1,1);
  If x = maxx Then x := 0;
  Repeat
    //    delay(100);
    gotoxy(1,y);
    write('+');
    gotoxy(maxx,y);
    write('+');
    y := y+1;
  Until y = maxy;
  x := 1;
  writeln('');
  Repeat
    //    delay(1);
    gotoxy(x,maxy);
    write('+');
    x := x+1;
  Until x = maxx+1;
End; // konec vypis ctverec
Procedure zasadcas; // zasazeni veci do y = 2
Begin
  gettime(h,m,s,hs);
  gotoxy(maxx-8,2);
  writeln(h+1,':',m,':',s);
  gotoxy(maxx-10,2);
  writeln('+');
  gotoxy(3,2);
  writeln('skore : ',a-4,' + 3');
  gotoxy((maxx Div 2) - 12,2);
  writeln('HAD by krystofee 2014 (c)');
End; // konec zasazeni do y = 2
Procedure vypishada; // cast ovladajici hada a jeho vykresleni
Var 
  i,lmx,lmy: integer;
  kp: boolean;
Begin
  i := a;
  Repeat
    gotoxy(polex[i],poley[i]);
    i := i-1;
    writeln('x');
  Until i = 1;
  kp := keypressed;
  If kp = true Then
    Begin
      p := readkey;
      kp := false;
    End;
  If p = 'w' Then
    Begin
      sy := sy-1;
      gotoxy(sx,sy);
      delay(10);
    End;
  If p = 'a' Then
    Begin
      sx := sx-1;
      gotoxy(sx,sy);
    End;
  If p = 's' Then
    Begin
      sy := sy+1;
      gotoxy(sx,sy);
    End;
  If p = 'd' Then
    Begin
      sx := sx+1;
      gotoxy(sx,sy);
    End;
  If p = 'p' Then
    Begin
      a := a + 1;
    End;
  write(p);
  polex[1] := sx;
  poley[1] := sy;
  lmx := poley[a];
  lmy := poley[a];
End; // konec vykreslení hada
Procedure pole; // vypocet souradnic ostatních článku hada
Var i: integer;
Begin
  i := a;
  Repeat
    polex[i] := polex[i-1];
    poley[i] := poley[i-1];
    i := i-1;
  Until i = 1;
  i := 0;
  If polex[1] = 1 Then
    Begin
      Repeat
        polex[i] := 119;
        i := i + 1;
        sx := 119;
      Until i = a + 1;
    End;
  i := 0;
  If polex[1] = 120 Then
    Begin
      Repeat
        polex[i] := 2;
        i := i + 1;
        sx := 2;
      Until i = a + 1;
    End;
  i := 0;
  If poley[1] = 3 Then
    Begin
      Repeat
        poley[i] := 29;
        i := i + 1;
        sy := 29;
      Until i = a + 1;
    End;
  i := 0;
  If poley[1] = 30 Then
    Begin
      Repeat
        poley[i] := 4;
        i := i + 1;
        sy := 4;
      Until i = a + 1;
    End;
End; // konec výpočtu článku hada
Procedure vypiszradlo; // vypocet a zasažení žrádla
Begin
  If snezeno = true Then
    Begin
      zx := random(119);
      zy := random(29);
    End;
  If zx <2 Then vypiszradlo;
  If zx >118 Then vypiszradlo;
  If zy <2 Then vypiszradlo;
  If zy >29 Then vypiszradlo;
  gotoxy(zx,zy);
  writeln('O');
  snezeno := false;
End; // konec zasažení žrádla
Procedure kontrolazradlo; // kontrola sezraneho zradla
Begin
  If sx = zx Then
    If sy = zy Then
      Begin
        snezeno := true;
        a := a +1;
      End;
End; // konec kontroly zradla
Procedure had; // hlavní hadova procedura
Begin
  sx := 120 Div 2;
  sy := 30  Div 2;
  a := 4;
  snezeno := true;
  polex[1] := 60;
  polex[2] := 61;
  polex[3] := 62;
  polex[4] := 63;
  poley[1] := 15;
  poley[2] := 15;
  poley[3] := 15;
  poley[4] := 15;
{  
  textbackground(green);
  textcolor(black);
  clrscr;
  gotoxy(sx,sy);
  write('');
}
  Repeat
    delay(100); //zpozdeni hada
    clrscr; 
    ctverec(120,30);// vypis hlavního ctverce
    ctverec(120,3); // vypis ctverce skóre a cas
    zasadcas; // zasazeni do y = 2
    pole; // vypocet všech článku hada
    vypiszradlo; // vypis zradla zavisejici na kontrole
    vypishada;// vypis hada
    kontrolazradlo; // kontrola zda je zradlo
  Until p = 'l';
End;// konec hlavního cyklu hada
Begin // menu
  ctverec(120,30);
  gotoxy(2,2);
  writeln('vitejte ve hre HAD');
  gotoxy(2,3);
  writeln('HAD by krystofee 2014 (c)');
  gotoxy(2,4);
  writeln('-------------------------');
  gotoxy(4,8);
  write('pro start hry stiskni 1: ');
  readln(razeni);
  Case razeni Of 
    1: had;
  End;
End.
          
          
          
Comments: