Tin học Game Phá Bom Pascal

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Nói thật thì mấy ngày nghỉ này mình cũng chẳng có gì để làm ngoài việc viết Code Game cả.:(:(:(
Game này dựa trên game Phá Bom huyền thoại.
Và đây là Code của nó, vì không có nhiều thời gian nên mình viết hơi sơ xài, không đẹp cho lắm :p:p:p
Mã:
  Program Pha_Bom;
  uses crt;
  const
       cx = 24;
       cy = 24;
       SoBom = 40;
       QuaBom = #153;
       LaCo = 'X';
       ThoiGian = 20000;
  var
     i,j,vx,vy,SoCo,tg,kiluc: integer;
     mh: array[1..cx,1..cy] of char;
     lCo: array[1..cx,1..cy] of Boolean;

  Procedure Tao_Bom;
  var x,y,k,l,bom : integer;
  Begin
       randomize;
       for i := 1 to SoBom do
       begin
            repeat
                  x := 1 + random(cx - 1);
                  y := 1 + random(cy - 1);
            until mh[x,y] <> QuaBom;
            mh[x,y] := QuaBom;
       end;
       for i := 1 to cx do
       for j := 1 to cy do
       if mh[i,j] <> QuaBom then
       begin
             bom := 0;
             for k := i - 1 to i + 1 do
             for l := j - 1 to j + 1 do
             if ((k <> i) or (l <> j)) and (k <> 0) and (l <> 0)
             and (k <> cx + 1) and (l <> cy + 1) then
             begin
                  if mh[k,l] = QuaBom then bom := bom + 1;
             end;
             if bom <> 0 then
             mh[i,j] := chr(Bom+48)
             else mh[i,j] := #32;
       end;
  End;

  Procedure Tao_Man_Hinh;
  Begin
       Tao_Bom;
       for i := 1 to cx do
       for j := 1 to cy do
       begin
            gotoxy(i*2,j);
            Write('.');
            lCo[i,j] := False;
       end;
  End;

  Procedure In_So_Lieu;
  Begin
       TextColor(Yellow);
       gotoxy(cx*2 + 5,3);
       Write('So Co: ',SoCo,'   ');
       gotoxy(cx*2 + 5,5);
       Write('Thoi gian: ',tg,' ');
       gotoxy(cx*2 + 5,7);
       Write('Ki Luc: ',kiluc,'   ');
  End;

  Procedure Pha_Boom;
  var k: char;
      gameOver : Boolean;
      SoBoom,t,tam,code: integer;
      f : text;
  Begin
       kiluc := 1000;
       Assign(f,'KiLuc.txt');
       reset(f);
       Read(f,kiluc);
       Close(f);
       vx := cx;
       vy := cy div 2;
       GameOver := False;
       SoCo := SoBom;
       SoBoom := SoBom;
       t := 0;
       repeat
       t := t + 1;
       if t = ThoiGian then
       begin
            tg := tg + 1;
            t := 0;
            In_So_Lieu;
       end;
       k := #0;
       if Keypressed then k := readkey;
       case k of
       #80: if vy < cy then vy := vy + 1;
       #72: if vy > 1 then vy := vy - 1;
       #77: if vx < cx * 2 then vx := vx + 2;
       #75: if vx > 2 then vx := vx - 2;
       #13:
       begin
            TextColor(White);
            gotoxy(vx,vy);
            if (mh[vx div 2,vy] <> QuaBom) then
            begin
                 Val(mh[vx div 2,vy],tam,code);
                 if tam <> 0 then
                 TextColor(tam);
            end;
            Write(mh[vx div 2,vy]);
            if mh[vx div 2,vy] = QuaBom then
            begin
                 GameOver := True;
                 TextColor(Red);
                 gotoxy(30,12);Write('GAME OVER!');
            end;
       end;
       #32:
       begin
             In_So_Lieu;
             TextColor(White);
             if SoCo > 0 then
             if not lCo[vx div 2,vy] then
             begin
                  gotoxy(vx, vy);
                  Write(LaCo);
                  lCo[vx div 2,vy] := True;
                  SoCo := SoCo - 1;
                  if mh[vx div 2,vy] = QuaBom then SoBoom := SoBoom - 1;
             end
             else
             begin
                  gotoxy(vx, vy);
                  Write('.');
                  LCo[vx div 2,vy] := False;
                  SoCo := SoCo + 1;
                  if mh[vx div 2,vy] = QuaBom then SoBoom := SoBoom + 1;
             end;
       end;
       end;
       Gotoxy(vx,vy);
       until (k = #27) or GameOver or (SoBoom = 0);
       TextColor(Red);
       if (SoBoom = 0) then
       begin
            gotoxy(30,12);Write('YOU WIN!');
            if tg < kiluc then
            begin
                 Rewrite(f);
                 Write(f,tg);
                 Close(f);
            end;
       end;
  End;

  BEGIN
       clrscr;
       Tao_Man_Hinh;
       Pha_Boom;
       readln;
  END.
Chơi được thì nhớ Share thành tích cho ae cùng xem với nha.
Quên nữa, Ấn Enter để phá bom và ấn Space để đặt cờ nha.
 

kaito kuroba

Học sinh mới
Thành viên
1 Tháng một 2020
36
12
6
18
Bình Dương
THCS Lê Quý Đôn
Nói thật thì mấy ngày nghỉ này mình cũng chẳng có gì để làm ngoài việc viết Code Game cả.:(:(:(
Game này dựa trên game Phá Bom huyền thoại.
Và đây là Code của nó, vì không có nhiều thời gian nên mình viết hơi sơ xài, không đẹp cho lắm :p:p:p
Mã:
  Program Pha_Bom;
  uses crt;
  const
       cx = 24;
       cy = 24;
       SoBom = 40;
       QuaBom = #153;
       LaCo = 'X';
       ThoiGian = 20000;
  var
     i,j,vx,vy,SoCo,tg,kiluc: integer;
     mh: array[1..cx,1..cy] of char;
     lCo: array[1..cx,1..cy] of Boolean;

  Procedure Tao_Bom;
  var x,y,k,l,bom : integer;
  Begin
       randomize;
       for i := 1 to SoBom do
       begin
            repeat
                  x := 1 + random(cx - 1);
                  y := 1 + random(cy - 1);
            until mh[x,y] <> QuaBom;
            mh[x,y] := QuaBom;
       end;
       for i := 1 to cx do
       for j := 1 to cy do
       if mh[i,j] <> QuaBom then
       begin
             bom := 0;
             for k := i - 1 to i + 1 do
             for l := j - 1 to j + 1 do
             if ((k <> i) or (l <> j)) and (k <> 0) and (l <> 0)
             and (k <> cx + 1) and (l <> cy + 1) then
             begin
                  if mh[k,l] = QuaBom then bom := bom + 1;
             end;
             if bom <> 0 then
             mh[i,j] := chr(Bom+48)
             else mh[i,j] := #32;
       end;
  End;

  Procedure Tao_Man_Hinh;
  Begin
       Tao_Bom;
       for i := 1 to cx do
       for j := 1 to cy do
       begin
            gotoxy(i*2,j);
            Write('.');
            lCo[i,j] := False;
       end;
  End;

  Procedure In_So_Lieu;
  Begin
       TextColor(Yellow);
       gotoxy(cx*2 + 5,3);
       Write('So Co: ',SoCo,'   ');
       gotoxy(cx*2 + 5,5);
       Write('Thoi gian: ',tg,' ');
       gotoxy(cx*2 + 5,7);
       Write('Ki Luc: ',kiluc,'   ');
  End;

  Procedure Pha_Boom;
  var k: char;
      gameOver : Boolean;
      SoBoom,t,tam,code: integer;
      f : text;
  Begin
       kiluc := 1000;
       Assign(f,'KiLuc.txt');
       reset(f);
       Read(f,kiluc);
       Close(f);
       vx := cx;
       vy := cy div 2;
       GameOver := False;
       SoCo := SoBom;
       SoBoom := SoBom;
       t := 0;
       repeat
       t := t + 1;
       if t = ThoiGian then
       begin
            tg := tg + 1;
            t := 0;
            In_So_Lieu;
       end;
       k := #0;
       if Keypressed then k := readkey;
       case k of
       #80: if vy < cy then vy := vy + 1;
       #72: if vy > 1 then vy := vy - 1;
       #77: if vx < cx * 2 then vx := vx + 2;
       #75: if vx > 2 then vx := vx - 2;
       #13:
       begin
            TextColor(White);
            gotoxy(vx,vy);
            if (mh[vx div 2,vy] <> QuaBom) then
            begin
                 Val(mh[vx div 2,vy],tam,code);
                 if tam <> 0 then
                 TextColor(tam);
            end;
            Write(mh[vx div 2,vy]);
            if mh[vx div 2,vy] = QuaBom then
            begin
                 GameOver := True;
                 TextColor(Red);
                 gotoxy(30,12);Write('GAME OVER!');
            end;
       end;
       #32:
       begin
             In_So_Lieu;
             TextColor(White);
             if SoCo > 0 then
             if not lCo[vx div 2,vy] then
             begin
                  gotoxy(vx, vy);
                  Write(LaCo);
                  lCo[vx div 2,vy] := True;
                  SoCo := SoCo - 1;
                  if mh[vx div 2,vy] = QuaBom then SoBoom := SoBoom - 1;
             end
             else
             begin
                  gotoxy(vx, vy);
                  Write('.');
                  LCo[vx div 2,vy] := False;
                  SoCo := SoCo + 1;
                  if mh[vx div 2,vy] = QuaBom then SoBoom := SoBoom + 1;
             end;
       end;
       end;
       Gotoxy(vx,vy);
       until (k = #27) or GameOver or (SoBoom = 0);
       TextColor(Red);
       if (SoBoom = 0) then
       begin
            gotoxy(30,12);Write('YOU WIN!');
            if tg < kiluc then
            begin
                 Rewrite(f);
                 Write(f,tg);
                 Close(f);
            end;
       end;
  End;

  BEGIN
       clrscr;
       Tao_Man_Hinh;
       Pha_Boom;
       readln;
  END.
Chơi được thì nhớ Share thành tích cho ae cùng xem với nha.
Quên nữa, Ấn Enter để phá bom và ấn Space để đặt cờ nha.
máy thông báo: file not found
 
Top Bottom