Lập trình

Lập trình

Thứ Sáu, 6 tháng 6, 2014

Game đơn giản viết bằng pascal

Đây là code rất đơn giản cho trò chơi giống flappy bird do mình không sử dụng unit graph nên nhìn hơi xâu .



PROGRAM Flappy;
USES CRT;
VAR TREN,DUOI,L,tangXDT,tangYDT,tangXNV : BYTE ;
XDT,YDT,XNV,F ,DIEM0,DIEM ,TGROI : INTEGER;
TEN :STRING;
_FILE :TEXT;

procedure TAOCNV(cot,tren,duoi : integer ) ; {---HAM NAY DE TAO CHUONG NGAI VAT.--- }

var i: integer;

begin
for i := 1 to tren do
begin
gotoxy(cot,i) ;
write(#25) ;
end;

for i:= 21-duoi to 21 do
begin
gotoxy(cot,i) ;
write(#24);
end;
end;

procedure VIETDT(x,y: integer); {----HAM NAY DUNG DE TAO DOI TUONG.2 BIEN LA TOA DO CUA DOI TUONG-----}

begin
f := 20 ;
gotoxy(x,y);
write(#2);

end;

BEGIN
CLRSCR;
RANDOMIZE;
TEXTBACKGROUND(25);
TEXTCOLOR(5);

XNV := 30 ;{DAY LA TOA DO x CUA NGAI VAT , NGAI VAT CHI CAN MOI X .}
{---XDT VA YDT LA CAC TOA DO CUA DOI TUONG.---}
XDT := 20;
YDT := 10;

GOTOXY(25,15);
WRITELN('AN T DE DI CHUYEN NHAN VAT ...') ;

DELAY(2000) ;

VIETDT(XDT,YDT);

{-------------TRO CHOI .. START WRITE------------------}

DIEM := 0;

TREN := 4 + RANDOM(6);
DUOI := 4 + RANDOM(6) ;
L := 0 ;
tangXDT := 1; tangYDT := 2;{-----XDT = CONST , T/M XDT PHAI CO THE BANG XNV. }
tangXNV := 8; TGROI := 120;
WHILE L = 0 DO

BEGIN

{-----TAO CHUONG NGAI VAT-----}

{----TREN VA DUOI LA DO DAI CUA CAC COT NGAI VAT O TREN VA DUOI.}

{TANG MUC DO KHO :}
IF DIEM = 12 THEN BEGIN TGROI := 85; tangXNV := 6; {tangYDT := 2 ;} END;
IF DIEM = 25 THEN BEGIN TGROI := 70; {tangYDT := 2 ;} tangXNV := 4; END;

TAOCNV(XNV,TREN,DUOI);
{-------TAO DOI TUONG --------}

{-- Luc chua co kich thich--- }
WHILE NOT KEYPRESSED DO
BEGIN
DELAY(TGROI);
CLRSCR;
TAOCNV(XNV,TREN,DUOI);
YDT := YDT +1 ;
VIETDT(XDT,YDT) ;

IF (YDT >= 21) OR (YDT = 1) THEN

BEGIN
GOTOXY(25,15) ;
WRITE('GAMEOVER') ;
DELAY(1500);
L := 1;
BREAK;
END ;

END;

IF L = 1 THEN BREAK ;

{-- Luc da co kich thich--- }
IF UPCASE(READKEY) = 'T' THEN
BEGIN

CLRSCR;
XDT := XDT + tangXDT ;
YDT := YDT - tangYDT ;
TAOCNV(XNV,TREN,DUOI);
VIETDT(XDT,YDT);

END;
{----KET THUC PHAN CHINH----/}
{--- XU LY------}
IF (YDT >= 21) OR (YDT = 1) THEN
BEGIN
GOTOXY(25,15) ;
WRITE('GAMEOVER') ;
DELAY(1500);
L := 1;
END ;
IF (XDT = XNV) THEN
BEGIN
IF (YDT <= TREN+1) OR (YDT >= (21 - DUOI)) THEN
BEGIN
GOTOXY(25,15) ;
WRITE('GAMEOVER') ;
DELAY(1500);
L := 1;
END
ELSE
BEGIN
SOUND(25);
SOUND(125);
DIEM:= DIEM +1 ;
XNV := XNV + tangXNV ;
TREN := 5 + RANDOM(4);
DUOI := 5 + RANDOM(5) ;
END;
END;
{--- DOI TUONG DA DI HET XDT > 74 >>> QUA MAN HINH ------}

IF XDT > 74 THEN
BEGIN
CLRSCR;
XDT := 5 ;
XNV := 10;

END;

END;

CLRSCR;
GOTOXY(25,15);
WRITE('DIEM CUA BAN LA: ',DIEM ,' DIEM . ');
GOTOXY(1,1);
{CLRSCR;
GOTOXY(25,15);
WRITE('DIEM CUA BAN LA: ',DIEM);
{---- TAO FILE VA KIEM TRA FILE LUU KET QUA . ----}
DIEM0 := 0;
ASSIGN(_FILE,'D:\TUAN_FLAPPY');

{$I-} {T?t vi?c ki?m tra Vào/Ra}
RESET (_FILE) ;READLN;
{$I+}; {M? vi?c ki?m tra Vào/Ra}

IF IOResult <> 0 THEN {BI LOI >> FILE KHONG TON TAI.}
BEGIN
REWRITE(_FILE ) ;
WRITELN(_FILE,0);
WRITELN(_FILE,'NGUYEN DINH TUAN');
END
ELSE
BEGIN {BEGIN OF ELSE}
IF NOT EOF(_FILE) THEN
BEGIN
READLN(_FILE,DIEM0);
READLN(_FILE,TEN );
END;
IF DIEM > DIEM0 THEN
BEGIN
GOTOXY(25,16);
WRITE('THANH TICH MOI: ',DIEM);
GOTOXY(25,17);
WRITE('THANH TICH CU LA: ',DIEM0,' THUOC VE BAN ',TEN);
ASSIGN(_FILE,'D:\TUAN_FALPPY');
REWRITE(_FILE);
CLRSCR;
GOTOXY(5,1);
WRITE('TEN CUA BAN LA : ');
READLN(TEN);
WRITELN(_FILE,DIEM);
WRITELN(_FILE,TEN);
END
ELSE
BEGIN
GOTOXY(25,17);
WRITE('THANH TICH CAO NHAT LA: ',DIEM0,' THUOC VE BAN ',TEN);
END;
DELAY(2000);
END; {END OF ELSE}

DELAY(3000);}
READLN;
END .

các bạn copy ra notepad rồi lưu vào ổ của trình dịch nhé . Sau đây là một vài hình ảnh của game :)

49 nhận xét:

  1. Trả lời
    1. Mình còn có một vài game viết bằng c++ trên console đơn giản như caro :) mong là giúp ích cho các bạn :)

      Xóa
    2. bạn ơi sao nó cứ ghi là unexpected the end of file.

      Xóa
    3. so write the 'end.' code at the bottom

      Xóa
    4. uses crt;
      var key : char;
      x,y,i,j,k,diem,tocdo : integer;
      begin
      textbackground(3);
      clrscr;
      randomize;
      x:=1;
      y:=1;
      diem:=0;
      j:=10;
      k:=10;
      key := chr(100);
      tocdo := 60;
      while i <> 1 do
      begin
      textcolor(2);
      gotoxy(x,y);
      write('X');
      if keypressed then key := readkey;
      if (key = chr(97)) or (key = chr(65)) then begin x:=x-1; {phim a} sound(131);delay(20);nosound;end;
      if (key = chr(100)) or (key = chr(68)) then begin x:=x+1; {phim d} sound(131);delay(20);nosound;end;
      if (key = chr(115)) or (key = chr(83)) then begin y:=y+1; {phim s} sound(131);delay(20);nosound;end;
      if (key = chr(119)) or (key = chr(87)) then begin y:=y-1; {phim w} sound(131);delay(20);nosound;end;
      textcolor(14 + blink);
      gotoxy(j,k);
      write('*');
      if (x = j) and (y = k) then
      begin
      diem:=diem + 1;
      j := random(39);
      k := random(24);
      if j<0 then j:= 79+j;
      if k<0 then k:= 25+k;
      tocdo := tocdo – 10;
      end;
      gotoxy(69,3);
      write('diem : ', diem);
      delay(tocdo);
      if (x = 0) or (x = 80) or (y = 0) or (y = 25) then i:=1;
      if diem = 6 then break;
      clrscr;
      end;
      if i=1 then
      begin
      gotoxy(40,13);
      write('ban thua roi ');
      write('diem cua ban la:',diem);
      end;
      if diem = 6 then
      begin
      gotoxy(40,13);
      write('thang roi ');
      write('diem cua ban la:',diem);
      end;
      readln;
      end.

      Xóa
  2. Trả lời
    1. bạn ơi, có cách nào để copy từ notepad để vào đc free pascal chứ gõ lâu lắm

      Xóa
    2. muốn paste
      bước 1:nhấn edit
      Bước 2:paste from windows

      Xóa
  3. sao mình không chạy được bạn? Lỗi 5 syntax error

    Trả lờiXóa
  4. bạn ơi sao máy mình lúc chạy chương trình xong nó bị lỗi ghi là " Error 200: Division by zero " là sao v bạn ???

    Trả lờiXóa
    Trả lời


    1. cai nay het loi r ne PROGRAM Flappy;
      USES CRT;
      VAR TREN,DUOI,L,tangXDT,tangYDT,tangXNV : BYTE ;
      XDT,YDT,XNV,F ,DIEM0,DIEM ,TGROI : INTEGER;
      TEN :STRING;
      _FILE :TEXT;

      procedure TAOCNV(cot,tren,duoi : integer ) ; {---HAM NAY DE TAO CHUONG NGAI VAT.--- }

      var i: integer;

      begin
      for i := 1 to tren do
      begin
      gotoxy(cot,i) ;
      write(#25) ;
      end;

      for i:= 21-duoi to 21 do
      begin
      gotoxy(cot,i) ;
      write(#24);
      end;
      end;

      procedure VIETDT(x,y: integer); {----HAM NAY DUNG DE TAO DOI TUONG.2 BIEN LA TOA DO CUA DOI TUONG-----}

      begin
      f := 20 ;
      gotoxy(x,y);
      write(#2);

      end;

      BEGIN
      CLRSCR;
      RANDOMIZE;
      TEXTBACKGROUND(25);
      TEXTCOLOR(5);

      XNV := 30 ;{DAY LA TOA DO x CUA NGAI VAT , NGAI VAT CHI CAN MOI X .}
      {---XDT VA YDT LA CAC TOA DO CUA DOI TUONG.---}
      XDT := 20;
      YDT := 10;

      GOTOXY(25,15);
      WRITELN('AN T DE DI CHUYEN NHAN VAT ...') ;

      DELAY(2000) ;

      VIETDT(XDT,YDT);

      {-------------TRO CHOI .. START WRITE------------------}

      DIEM := 0;

      TREN := 4 + RANDOM(6);
      DUOI := 4 + RANDOM(6) ;
      L := 0 ;
      tangXDT := 1; tangYDT := 2;{-----XDT = CONST , T/M XDT PHAI CO THE BANG XNV. }
      tangXNV := 8; TGROI := 120;
      WHILE L = 0 DO

      BEGIN

      {-----TAO CHUONG NGAI VAT-----}

      {----TREN VA DUOI LA DO DAI CUA CAC COT NGAI VAT O TREN VA DUOI.}

      {TANG MUC DO KHO :}
      IF DIEM = 12 THEN BEGIN TGROI := 85; tangXNV := 6; {tangYDT := 2 ;} END;
      IF DIEM = 25 THEN BEGIN TGROI := 70; {tangYDT := 2 ;} tangXNV := 4; END;

      TAOCNV(XNV,TREN,DUOI);
      {-------TAO DOI TUONG --------}

      {-- Luc chua co kich thich--- }
      WHILE NOT KEYPRESSED DO
      BEGIN
      DELAY(TGROI);
      CLRSCR;
      TAOCNV(XNV,TREN,DUOI);
      YDT := YDT +1 ;
      VIETDT(XDT,YDT) ;

      IF (YDT >= 21) OR (YDT = 1) THEN

      BEGIN
      GOTOXY(25,15) ;
      WRITE('GAMEOVER') ;
      DELAY(1500);
      L := 1;
      BREAK;
      END ;

      END;

      IF L = 1 THEN BREAK ;

      {-- Luc da co kich thich--- }
      IF UPCASE(READKEY) = 'T' THEN
      BEGIN

      CLRSCR;
      XDT := XDT + tangXDT ;
      YDT := YDT - tangYDT ;
      TAOCNV(XNV,TREN,DUOI);
      VIETDT(XDT,YDT);

      END;
      {----KET THUC PHAN CHINH----/}
      {--- XU LY------}
      IF (YDT >= 21) OR (YDT = 1) THEN
      BEGIN
      GOTOXY(25,15) ;
      WRITE('GAMEOVER') ;
      DELAY(1500);
      L := 1;
      END ;
      IF (XDT = XNV) THEN
      BEGIN
      IF (YDT <= TREN+1) OR (YDT >= (21 - DUOI)) THEN
      BEGIN
      GOTOXY(25,15) ;
      WRITE('GAMEOVER') ;
      DELAY(1500);
      L := 1;
      END
      ELSE
      BEGIN
      SOUND(25);
      SOUND(125);
      DIEM:= DIEM +1 ;
      XNV := XNV + tangXNV ;
      TREN := 5 + RANDOM(4);
      DUOI := 5 + RANDOM(5) ;
      END;
      END;
      {--- DOI TUONG DA DI HET XDT > 74 >>> QUA MAN HINH ------}

      IF XDT > 74 THEN
      BEGIN
      CLRSCR;
      XDT := 5 ;
      XNV := 10;

      END;

      END;

      CLRSCR;
      GOTOXY(25,15);
      WRITE('DIEM CUA BAN LA: ',DIEM ,' DIEM . ');
      GOTOXY(1,1);
      {CLRSCR;
      GOTOXY(25,15);
      WRITE('DIEM CUA BAN LA: ',DIEM);
      {---- TAO FILE VA KIEM TRA FILE LUU KET QUA . ----}
      DIEM0 := 0;
      ASSIGN(_FILE,'D:\TUAN_FLAPPY');

      {$I-} {T?t vi?c ki?m tra Vào/Ra}
      RESET (_FILE) ;READLN;
      {$I+}; {M? vi?c ki?m tra Vào/Ra}

      IF IOResult <> 0 THEN {BI LOI >> FILE KHONG TON TAI.}
      BEGIN
      REWRITE(_FILE ) ;
      WRITELN(_FILE,0);
      WRITELN(_FILE,'NGUYEN DINH TUAN');
      END
      ELSE
      BEGIN {BEGIN OF ELSE}
      IF NOT EOF(_FILE) THEN
      BEGIN
      READLN(_FILE,DIEM0);
      READLN(_FILE,TEN );
      END;
      IF DIEM > DIEM0 THEN
      BEGIN
      GOTOXY(25,16);
      WRITE('THANH TICH MOI: ',DIEM);
      GOTOXY(25,17);
      WRITE('THANH TICH CU LA: ',DIEM0,' THUOC VE BAN ',TEN);
      ASSIGN(_FILE,'D:\TUAN_FALPPY');
      REWRITE(_FILE);
      CLRSCR;
      GOTOXY(5,1);
      WRITE('TEN CUA BAN LA : ');
      READLN(TEN);
      WRITELN(_FILE,DIEM);
      WRITELN(_FILE,TEN);
      END
      ELSE
      BEGIN
      GOTOXY(25,17);
      WRITE('THANH TICH CAO NHAT LA: ',DIEM0,' THUOC VE BAN ',TEN);
      END;
      DELAY(2000);
      END; {END OF ELSE}

      DELAY(3000);
      READLN;
      END .

      Xóa
    2. bạn ơi mình hỏi tí! sao mình làm mà nó cứ ghi là unexpected end of line. Sửa sao bạn

      Xóa
    3. unexpected end of file nha mình ghi lộn hihi

      Xóa
  5. lam sao de choi ban? no chay nhanh qua ban oi

    Trả lờiXóa
    Trả lời
    1. Bạn có thể thay đổi hàm DELAY(time) trong hàm nhé ;)

      Xóa
  6. lam sao de choi ban? no chay nhanh qua ban oi

    Trả lờiXóa
  7. sao mình ko paste ra đc vậy

    Trả lờiXóa
  8. nó báo syntax error

    Trả lờiXóa
  9. Nè mấy bạn ơi cho mk hỏi tí h muốn làm game này là mk phải gỏ y chang đoạn VBản trên hay là mk còn phải sửa đổi j nửa k

    Trả lờiXóa
    Trả lời
    1. co nha bn minh sua lenh dela(3000);} o an cuoi lai thanh delay(3000);la choi dc tai ban ko de y chu luc mih xem lai thi moi biet loi

      Xóa
  10. Mình không có nhé bạn :) .

    Trả lờiXóa
  11. Mình cũng muốn học lập trình mà khó quá à

    Trả lờiXóa
  12. sao lúc chạy màn hình ghi là file không tồn tại, làm thế nào để sửa hả bạn?

    Trả lờiXóa
  13. Xem thử code Flappy Bird của mình nhé, ngắn gọn hơn nhiều.
    Có link download mã nguồn trong video đó.
    https://www.youtube.com/watch?v=HROiX1KWaa8

    Trả lờiXóa
  14. Xem thử code Flappy Bird của mình nhé, ngắn gọn hơn nhiều.
    Có link download mã nguồn trong video đó.
    https://www.youtube.com/watch?v=HROiX1KWaa8

    Trả lờiXóa
  15. Cho mình xin code của 3 game khác cũng viết bằng Pascal đi. Mình rất cần gấp lắm.Cảm ơn bạn nhiều.

    Trả lờiXóa
  16. ctrinh chạy xong nó báo lỗi mà mình ko biết lỗi gì hết

    Trả lờiXóa
    Trả lời
    1. loi delay(3000):} o ke cuoi kia,sua lai thanh delay(3000); a choi dc ak

      Xóa
  17. bai nay ban tuan dang hi minh nhan xet la cay lenh delay(3000);} la sai phai sua lai thanh delay(3000); nha ban tuan

    Trả lờiXóa
  18. 'can't find unit CRT used by flappy' la loi gi vay a ?

    Trả lờiXóa
  19. may cai ------------------ la sao vay

    Trả lờiXóa
  20. làm sao lưu vào ổ trình dịch

    Trả lờiXóa
  21. Hàm gotoxy là hàm gì vậy bạn

    Trả lờiXóa
  22. tại sao nó cứ nói 'unexpected end of file' thế bạn?

    Trả lờiXóa
  23. sao mình bấm t mà ko di chuyển v ?;-;

    Trả lờiXóa
  24. QUÁ OK LUÔN. 1 LIKE

    Trả lờiXóa
  25. này bạn ơi mình đã thử và nó khá là ồn khi mình chơi thử mong bạn phản hồi

    Trả lờiXóa
  26. bạn ơi, nó chơi được nhưng path not found thì sửa như thế nào?
    cảm ơn bạn vì con game.

    Trả lờiXóa