Tin học Game "OFF LIGHT" Pascal

Thảo luận trong 'Lập trình game- android,ios' bắt đầu bởi trà nguyễn hữu nghĩa, 29 Tháng tư 2018.

Lượt xem: 557

  1. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh
    Sở hữu bí kíp ĐỖ ĐẠI HỌC ít nhất 24đ - Đặt chỗ ngay!

    Đọc sách & cùng chia sẻ cảm nhận về sách số 2


    Chào bạn mới. Bạn hãy đăng nhập và hỗ trợ thành viên môn học bạn học tốt. Cộng đồng sẽ hỗ trợ bạn CHÂN THÀNH khi bạn cần trợ giúp. Đừng chỉ nghĩ cho riêng mình. Hãy cho đi để cuộc sống này ý nghĩa hơn bạn nhé. Yêu thương!

    Thật ra là Game "Tắt đèn chạy đua" Pascal mình thấy trên mạng rồi về làm thử :)
    Mã:
     Program Tat_Den;
     Uses crt;
     const
          Soden = 7;
          khch = 10;
          Phimlen : array[1..Soden] of char = ('q','w','e','r','t','y','u');
          Phimxuong: array[1..Soden] of char = ('a','s','d','f','g','h','j');
          Min = 1;
          Max = 24;
          NguyHiem = 4;
          Speed = 3000;
     Var
        Den, huong, mau: array[1..Soden] of integer;
        phim: char;
        Diem,DiemMax: integer;
        f: text;
    
     Procedure In_Gioi_Han;
     var i,j: integer;
     Begin
          for i := khch to Soden*khch do
          begin
               TextColor(Red);
               gotoxy(i, Min + 1);
               Write(#196);
               gotoxy(i, Max);
               Write(#196);
               TextColor(Green);
               Gotoxy(i, 12);
               Write('_');
          end;
          for i := 1 to SoDen do
          begin
               Textcolor(LightGray);
               for j := Min + 2 To Max - 1 do
               begin
                    Gotoxy(i * khch,j);
                    Write('.');
               end;
          end;
          for i := 1 to SoDen do
          begin
               TextColor(Blue);
               Gotoxy(i * khch,Min);
               Write(PhimLen[i]);
               Gotoxy(i * khch,Max + 1);
               Write(Phimxuong[i]);
          end;
    
     End;
    
     Procedure In_Den;
     var i,j, c: integer;
     Begin
          In_Gioi_Han;
          for i := 1 to Soden do
          begin
               if Den[i] > 0 then
               j:= 12
               else if Den[i] < 0 then j := 13;
               c := j;
               while j <> c - Den[i] do
               begin
                    TextColor(mau[i]);
                    Gotoxy(i * khch,j);
                    Write(#219);
                    j := j - Den[i] div Abs(Den[i]);
               end;
          end;
     End;
    
     Procedure Dong_Dien;
     var i : integer;
     Begin
          for i := 1 to Soden do
          begin
               Den[i] := Den[i] + huong[i];
          end;
     End;
    
     Procedure Lay_Phim;
     var i: integer;
     Begin
          Phim := #0;
          if KeyPressed then Phim := Readkey;
          for i := 1 to Soden do
          begin
               if Phim = Phimlen[i] then huong[i] := 1;
               if Phim = Phimxuong[i] then huong[i] := -1;
          end;
     End;
    
     Function EndGame: Boolean;
     var i: integer;
     Begin
          EndGame := False;
          for i := 1 to SoDen do
          begin
               if (Den[i] >= 12 - Min) or (Den[i] <= 12 - Max) then EndGame := True
               else
               if (Den[i] >= 12 - Min - NguyHiem) or
               (Den[i] <= 12 + NguyHiem - Max) then mau[i] := LightRed
               else mau[i] := Green;
          end;
     End;
    
     Procedure Main;
     var i,t: integer;
     Begin     
          repeat
                 DiemMax := 0;
                Assign(f,'DiemMax.txt');
                reset(f);
                Read(f,DiemMax);
                Close(f);
                clrscr;
                TextColor(White);
                Gotoxy(SoDen*khch + 3,7);
                Write('Max: ',DiemMax);
                diem := 0;
                t := 0;
                for i := 1 to Soden do begin Den[i] := 0;huong[i] := 1;end;
                repeat
                      t := t+ 1;
                      Lay_Phim;
                      if t = Speed then
                      begin
                           Dong_Dien;
                           In_Den;
                           t := 0;
                           diem := diem + 1;
                           TextColor(White);
                           Gotoxy(khch*soDen + 3,5);
                           Write('Diem: ',diem);
                      end;
                Until EndGame or (Phim = #27);
                if Phim <> #27 then
                begin
                     readln;
                     clrscr;
                     Write('Bam ESC de thoat, phim bat ki de choi lai!');
                     repeat Until Keypressed;
                     Phim := ReadKey;
               end;
          if Diem > DiemMax then
          begin
               ReWrite(f);
               Write(f,Diem);
               Close(f);
          end;
          Until Phim = #27;
     End;
    
     BEGIN
          clrscr;
          TextColor(White);
          Write('Hay bam cac phim o tren va duoi cac den' +
          ' de dieu chinh dong dien qua den. ' +
          'Khi    dong dien cham cac vach do thi ban se thua!');
          readln;
          Main;
     END.
     
    Last edited: 29 Tháng tư 2018
  2. kaito kuroba

    kaito kuroba Học sinh mới Thành viên

    Bài viết:
    36
    Điểm thành tích:
    6
    Nơi ở:
    Bình Dương
    Trường học/Cơ quan:
    THCS Lê Quý Đôn

    chơi làm sao vậy anh. nó nói bấm phím o liên tục em bấm mà có thấy gì đâu
     
  3. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    haha không phải phím "o" nha, phải là
    "hãy bấm các phím ở trên và ở dưới các đèn để điều chỉnh dòng điện qua đèn...."
    tức là các phím "q,w,e,r,t....." nha
     
  4. kaito kuroba

    kaito kuroba Học sinh mới Thành viên

    Bài viết:
    36
    Điểm thành tích:
    6
    Nơi ở:
    Bình Dương
    Trường học/Cơ quan:
    THCS Lê Quý Đôn

    zậy à em hum bít
     
  5. Valhein AIC

    Valhein AIC Học sinh Thành viên

    Bài viết:
    52
    Điểm thành tích:
    21
    Nơi ở:
    Khánh Hòa
    Trường học/Cơ quan:
    Magic school

    làm sao mà em không làm được anh ơi
     
  6. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    Nếu không chơi được bạn chụp màn hình lỗi để mọi người giúp đỡ nha
     
  7. Valhein AIC

    Valhein AIC Học sinh Thành viên

    Bài viết:
    52
    Điểm thành tích:
    21
    Nơi ở:
    Khánh Hòa
    Trường học/Cơ quan:
    Magic school

    cái màn hình nó chỉ ghi chữ mà anh ghi ở phần cuối của chương trình mà anh viết còn lại thì nó chẳng ghi gì nữa
     
  8. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    Nhấn enter để chơi đoa bạn
     
  9. Valhein AIC

    Valhein AIC Học sinh Thành viên

    Bài viết:
    52
    Điểm thành tích:
    21
    Nơi ở:
    Khánh Hòa
    Trường học/Cơ quan:
    Magic school

    em đánh enter nhưng nó bảo lỗi exitcode = 2 đó anh
     
  10. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    Đảm bải là em chơi bằng turbo pascal nha
     
  11. Valhein AIC

    Valhein AIC Học sinh Thành viên

    Bài viết:
    52
    Điểm thành tích:
    21
    Nơi ở:
    Khánh Hòa
    Trường học/Cơ quan:
    Magic school

    nếu em chơi bằng turbo pascal thì nó bảo là file not found
     
  12. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    Vậy thì vô thư mục bin tạo file tên là diemmax.txt rồi gõ 0 vào là ok :)
     
  13. Hoàng Vũ YS

    Hoàng Vũ YS Học sinh Thành viên

    Bài viết:
    155
    Điểm thành tích:
    21
    Nơi ở:
    Thanh Hóa
    Trường học/Cơ quan:
    Trường THPT Triệu Sơn 4

    anh ơi, em làm theo hướng dẫn của anh để nhập vào turbo pascal nhưng tìm k thấy mục BIN . h làm sao anh ?
     
    trà nguyễn hữu nghĩa thích bài này.
  14. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    Phải tìm cho ra thôi chứ sao giờ...hoặc đợi anh 10 phút anh sửa tí code rồi có chơi :p
     
  15. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    Mã:
    Program Tat_Den;
     Uses crt;
     const
          Soden = 7;
          khch = 10;
          Phimlen : array[1..Soden] of char = ('q','w','e','r','t','y','u');
          Phimxuong: array[1..Soden] of char = ('a','s','d','f','g','h','j');
          Min = 1;
          Max = 24;
          NguyHiem = 4;
          Speed = 3000;
     Var
        Den, huong, mau: array[1..Soden] of integer;
        phim: char;
        Diem,DiemMax: integer;
    
     Procedure In_Gioi_Han;
     var i,j: integer;
     Begin
          for i := khch to Soden*khch do
          begin
               TextColor(Red);
               gotoxy(i, Min + 1);
               Write(#196);
               gotoxy(i, Max);
               Write(#196);
               TextColor(Green);
               Gotoxy(i, 12);
               Write('_');
          end;
          for i := 1 to SoDen do
          begin
               Textcolor(LightGray);
               for j := Min + 2 To Max - 1 do
               begin
                    Gotoxy(i * khch,j);
                    Write('.');
               end;
          end;
          for i := 1 to SoDen do
          begin
               TextColor(Blue);
               Gotoxy(i * khch,Min);
               Write(PhimLen[i]);
               Gotoxy(i * khch,Max + 1);
               Write(Phimxuong[i]);
          end;
    
     End;
    
     Procedure In_Den;
     var i,j, c: integer;
     Begin
          In_Gioi_Han;
          for i := 1 to Soden do
          begin
               if Den[i] > 0 then
               j:= 12
               else if Den[i] < 0 then j := 13;
               c := j;
               while j <> c - Den[i] do
               begin
                    TextColor(mau[i]);
                    Gotoxy(i * khch,j);
                    Write(#219);
                    j := j - Den[i] div Abs(Den[i]);
               end;
          end;
     End;
    
     Procedure Dong_Dien;
     var i : integer;
     Begin
          for i := 1 to Soden do
          begin
               Den[i] := Den[i] + huong[i];
          end;
     End;
    
     Procedure Lay_Phim;
     var i: integer;
     Begin
          Phim := #0;
          if KeyPressed then Phim := Readkey;
          for i := 1 to Soden do
          begin
               if Phim = Phimlen[i] then huong[i] := 1;
               if Phim = Phimxuong[i] then huong[i] := -1;
          end;
     End;
    
     Function EndGame: Boolean;
     var i: integer;
     Begin
          EndGame := False;
          for i := 1 to SoDen do
          begin
               if (Den[i] >= 12 - Min) or (Den[i] <= 12 - Max) then EndGame := True
               else
               if (Den[i] >= 12 - Min - NguyHiem) or
               (Den[i] <= 12 + NguyHiem - Max) then mau[i] := LightRed
               else mau[i] := Green;
          end;
     End;
    
     Procedure Main;
     var i,t: integer;
     Begin    
          DiemMax := 0;
          repeat
                clrscr;
                TextColor(White);
                Gotoxy(SoDen*khch + 3,7);
                Write('Max: ',DiemMax);
                diem := 0;
                t := 0;
                for i := 1 to Soden do begin Den[i] := 0;huong[i] := 1;end;
                repeat
                      t := t+ 1;
                      Lay_Phim;
                      if t = Speed then
                      begin
                           Dong_Dien;
                           In_Den;
                           t := 0;
                           diem := diem + 1;
                           TextColor(White);
                           Gotoxy(khch*soDen + 3,5);
                           Write('Diem: ',diem);
                      end;
                Until EndGame or (Phim = #27);
                if Phim <> #27 then
                begin
                     readln;
                     clrscr;
                     Write('Bam ESC de thoat, phim bat ki de choi lai!');
                     repeat Until Keypressed;
                     Phim := ReadKey;
               end;
          if Diem > DiemMax then
          DiemMax := Diem;
          Until Phim = #27;
     End;
    
     BEGIN
          clrscr;
          TextColor(White);
          Write('Hay bam cac phim o tren va duoi cac den' +
          ' de dieu chinh dong dien qua den. ' +
          'Khi    dong dien cham cac vach do thi ban se thua!');
          readln;
          Main;
     END.
    Giờ thì các chú thỏa thích trải nghiệm nha.....
    Mới test lại làm mình nhớ cảm giác lúc làm được game này quá :(
     
    anoymousHoàng Vũ YS thích bài này.
  16. anoymous

    anoymous Học sinh mới Thành viên

    Bài viết:
    29
    Điểm thành tích:
    6
    Nơi ở:
    Hà Giang
    Trường học/Cơ quan:
    THCS LTT

    anh ơi anh chỉnh lại cho em cái màu chữ ở chỗ này với ạ
    Untitled.png
     
    trà nguyễn hữu nghĩa thích bài này.
  17. trà nguyễn hữu nghĩa

    trà nguyễn hữu nghĩa Cựu Phó Nhóm Vật Lí |Cây bút Thơ|Thần tượng VH Thành viên

    Bài viết:
    3,028
    Điểm thành tích:
    629
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Trường THPT Lương Văn Chánh

    Muốn vậy bạn sửa đoạn code này xíu nha
    Mã:
    for i := 1 to SoDen do
          begin
               TextColor(Blue);
               Gotoxy(i * khch,Min);
               Write(PhimLen[i]);
               Gotoxy(i * khch,Max + 1);
               Write(Phimxuong[i]);
          end;
    Thay Blue thành Orange là được nha :D
     
Chú ý: Trả lời bài viết tuân thủ NỘI QUY. Xin cảm ơn!

Draft saved Draft deleted

CHIA SẺ TRANG NÀY

-->