Giai Nobel 2012
07:54:32 PM Ngày 02 Tháng Mười Hai, 2020 *

Chào mừng bạn đến với Diễn Đàn Vật Lý.

Bạn có thể đăng nhập hoặc đăng ký.
Hay bạn đã đăng ký nhưng cần gửi lại email kích hoạt tài khoản?
Vui lòng nhập tên Đăng nhập với password, và thời gian tự động thoát





Lưu ý: Đây là diễn đàn của Thư Viện Vật Lý. Tài khoản ở Diễn Đàn Vật Lý khác với tài khoản ở trang chủ Thuvienvatly.com. Nếu chưa có tài khoản ở diễn đàn, bạn vui lòng tạo một tài khoản (chỉ mất khoảng 1 phút!!). Cảm ơn các bạn.
Phòng chát chít
Bạn cần đăng nhập để tham gia thảo luận
Vật lý 360 Độ
Sao neutron to bao nhiêu?
18/09/2020
Giải chi tiết mã đề 219 môn Vật Lý đề thi TN THPT 2020 (đợt 2)
04/09/2020
250 Mốc Son Chói Lọi Trong Lịch Sử Vật Lí (Phần 96)
04/09/2020
250 Mốc Son Chói Lọi Trong Lịch Sử Vật Lí (Phần 95)
04/09/2020
Lực nâng từ tách biệt tế bào sống với tế bào chết
27/08/2020
LHC tạo ra vật chất từ ánh sáng
26/08/2020

follow TVVL Twitter Facebook Youtube Scirbd Rss Rss
  Trang chủ Diễn đàn Tìm kiếm Đăng nhập Đăng ký  


Quy định cần thiết


Chào mừng các bạn đến với diễn đàn Thư Viện Vật Lý
☞ THI THỬ THPT QG LẦN 9 MÔN VẬT LÝ 2020 - 21h00 NGÀY 2-8-2020 ☜

Trả lời

Topic tin học nơi học đường!! đặc biệt là pascal ^^

Trang: 1 2 3 »   Xuống
  In  
Tác giả Chủ đề: topic tin học nơi học đường!! đặc biệt là pascal ^^  (Đọc 16561 lần)
0 Thành viên và 1 Khách đang xem chủ đề.
tinhoc
Moderator
Thành viên tích cực
*****

Nhận xét: +6/-3
Cảm ơn
-Đã cảm ơn: 48
-Được cảm ơn: 25

Offline Offline

Giới tính: Nữ
Bài viết: 225


¶v¶¥ £0\/€ F0R ¥0U

luckygirl_sorrymylove
Xem hồ sơ cá nhân Email
« vào lúc: 05:50:07 PM Ngày 26 Tháng Tám, 2010 »

chào mọi người!!!!!!! topic này lập ra nhằm trao đổi giúp đỡ nhau trong chương trình pascal lớp 11
 mọi ng ( có mìh trong đó nữa nghen ) có thắc mắc hoạt bài tập nào không giải được hoặc ko tìm ra lỗi khi chạy chương trình thì post lên mọi ng cùng chung tay giúp đỡ 
 P/s nói là pascal 11 nhưng cái gì có trong học đường thì mọi ng cứ hỏi (từ 11 trở xuống nhé em chưa học 12)
« Sửa lần cuối: 09:35:42 PM Ngày 26 Tháng Tám, 2010 gửi bởi tinhoc »

Logged


tinhoc
Moderator
Thành viên tích cực
*****

Nhận xét: +6/-3
Cảm ơn
-Đã cảm ơn: 48
-Được cảm ơn: 25

Offline Offline

Giới tính: Nữ
Bài viết: 225


¶v¶¥ £0\/€ F0R ¥0U

luckygirl_sorrymylove
Xem hồ sơ cá nhân Email
« Trả lời #1 vào lúc: 06:32:36 PM Ngày 29 Tháng Tám, 2010 »

hình như chẳng ai có thắc mắc gì    Roll Eyes


Logged
tinhoc
Moderator
Thành viên tích cực
*****

Nhận xét: +6/-3
Cảm ơn
-Đã cảm ơn: 48
-Được cảm ơn: 25

Offline Offline

Giới tính: Nữ
Bài viết: 225


¶v¶¥ £0\/€ F0R ¥0U

luckygirl_sorrymylove
Xem hồ sơ cá nhân Email
« Trả lời #2 vào lúc: 09:06:49 AM Ngày 01 Tháng Chín, 2010 »

vi` mọi ng ko có thắc mắc j` nên tinhoc sẽ chỉ đưa ra tài liệu tham khảo thêm cho mọi ng nha 
 * các phím chức năng của pascal ( chắc cái này aj cũng bek  )
      + F2: lưu chương trình trong khi soạn thảo.
      + F3: tạo một file mới hoặc mở một file cũ.
      + F9: duyệt chương trình để kiểm tra lỗi
      + Ctrl+F9: chạy chương trình
      +Alt+F5: xem kết quả chạy chương trình
      +Alt + X: thoát khỏi màn hình soạn thảo chương trình pascal.
 * các từ khóa trong pascal ( giúp các bạn khi đặt tên ko bj trùng lặp và cũng dễ bek lỗi sai khi mà duyệt chương trình báo lỗi ở tên  )
       and, array, asm, begin, case, const, constructor, destructor, div, do, downto, else,
end, file, for, function, goto, if, implementation, in, inline, interface, label, mod, nil,
not, object, of, or, packed, procedure, program, record, repeat, set, shl, shr, string,
then, to, type, unit, until, uses, var, while, with, xor.
  *tiếp theo là các kiểu dữ liệu
         a/ kiểu nguyên số :
- byte: phạm vi biểu diễn 0 --> 255 ( chiếm 1 byte trong bộ nhớ)
- integer: phạm vi biểu diễn -32768 --> 32767 ( chiếm 2 byte trong bộ nhớ)
- shortint: phạm vi biểu diễn -128 --> 127 ( chiếm 1 byte trong bộ nhớ)
- word: phạm vi biểu diễn 0 --> 65535( chiếm 2 byte trong bộ nhớ)
- longint: phạm vi biểu diễn -2147483648 --> 2147483647 ( chiếm 4 byte trong bộ nhớ)
 hôm nay thế thôi tinhoc còn học bài hôm khác sẽ post típ 


Logged
Colosseo
Thành viên danh dự
****

Nhận xét: +37/-4
Cảm ơn
-Đã cảm ơn: 0
-Được cảm ơn: 30

Offline Offline

Giới tính: Nam
Bài viết: 388


*************** ***************
Xem hồ sơ cá nhân WWW Email
« Trả lời #3 vào lúc: 09:41:53 AM Ngày 01 Tháng Chín, 2010 »

tinhoc à, nếu chỉ viết như vậy thì không hấp dẫn người đọc đâu. Nếu bạn có thể viết các bài hướng dẫn lập trình cụ thể trong Pascal luôn thì topic này sẽ thu hút được nhiều người hơn đấy.


Logged

Là où je t'emmènerai Nghỉ 1 tháng.
tinhoc
Moderator
Thành viên tích cực
*****

Nhận xét: +6/-3
Cảm ơn
-Đã cảm ơn: 48
-Được cảm ơn: 25

Offline Offline

Giới tính: Nữ
Bài viết: 225


¶v¶¥ £0\/€ F0R ¥0U

luckygirl_sorrymylove
Xem hồ sơ cá nhân Email
« Trả lời #4 vào lúc: 10:18:20 AM Ngày 01 Tháng Chín, 2010 »

tinhoc à, nếu chỉ viết như vậy thì không hấp dẫn người đọc đâu. Nếu bạn có thể viết các bài hướng dẫn lập trình cụ thể trong Pascal luôn thì topic này sẽ thu hút được nhiều người hơn đấy.
thì mọi ng phải thắc mắc hoặc iu cầu đề ntn thì mới làm bài hướng dẫn dc chứ anh.
với laj bài tập đó mọi ng phải tự làm trước khi nào bí wa' tìm ko ra lỗi hoặc bài khó wa' thì mới post lên mọi ng giúp đỡ để hiểu rõ và làm chứ ko phai dua đề lên để moi ng làm rồi mih chep vào ma ko hiểu tí j`.
vì pascal cần tư duy nhiều 


Logged
Colosseo
Thành viên danh dự
****

Nhận xét: +37/-4
Cảm ơn
-Đã cảm ơn: 0
-Được cảm ơn: 30

Offline Offline

Giới tính: Nam
Bài viết: 388


*************** ***************
Xem hồ sơ cá nhân WWW Email
« Trả lời #5 vào lúc: 10:31:18 AM Ngày 01 Tháng Chín, 2010 »

Ý của mình là ta sẽ không phải làm theo kiểu giải bài tập, mà làm theo kiểu hướng dẫn học. Có thể lấy ví dụ các ý tưởng như sau:

Bài 1: Giới thiệu tổng quan về Pascal  (tại sao phải học nó?)

Bài 2: Giới thiệu công cụ cần có để học (ví dụ : Turbo Pascal, cách download, cài đặt, giới thiệu môi trường làm việc,...)

Bài 3: Viết chương trình đầu tiên (Hello, World!) --> giải thích cấu trúc cơ bản của 1 chương trình --> giải thích cách compile chương trình, cách chạy chương trình vừa viết.

Bài 4: Giới thiệu các kiểu biến

Bài 5: Giới thiệu các cấu trúc điều khiển, vòng lập,...

Bài 6: Giới thiệu cách viết các hàm, các chương trình con,...

v.v...
 
Bài XXX: Giới thiệu đồ họa trong Pascal ...

và xa hơn...

Bài YYY: Giới thiệu về Delphi,....

Trong mỗi bài, ta có thể đưa ra các ví dụ cụ thể để người đọc có thêm hứng thú. Ví dụ như là giải phương trình bậc 2, tính điểm học sinh, chơi bản nhạc, tạo các trò chơi nhỏ như đoán số, oảnh tù tì,...



 


Logged

Là où je t'emmènerai Nghỉ 1 tháng.
tinhoc
Moderator
Thành viên tích cực
*****

Nhận xét: +6/-3
Cảm ơn
-Đã cảm ơn: 48
-Được cảm ơn: 25

Offline Offline

Giới tính: Nữ
Bài viết: 225


¶v¶¥ £0\/€ F0R ¥0U

luckygirl_sorrymylove
Xem hồ sơ cá nhân Email
« Trả lời #6 vào lúc: 11:03:23 AM Ngày 01 Tháng Chín, 2010 »

mấy thuật toán viet game hơi khó và dài dòng @@. em doc thj cung thấy ớn  Undecided Undecided
cái đó khi nào em tìm hiểu rõ ràng rồi mới dám hướng dẫn ng khác.
 anh tranquynh nếu bek thì huong dan e vd nha'. tk
« Sửa lần cuối: 11:05:28 AM Ngày 01 Tháng Chín, 2010 gửi bởi tinhoc »

Logged
Trần Triệu Phú
Giáo Viên
Administrator
Lão làng
*****

Nhận xét: +32/-11
Cảm ơn
-Đã cảm ơn: 108
-Được cảm ơn: 179

Offline Offline

Giới tính: Nam
Bài viết: 792

Loving and Dying for my God

trieuphu05
Xem hồ sơ cá nhân WWW Email
« Trả lời #7 vào lúc: 12:37:14 PM Ngày 01 Tháng Chín, 2010 »

Cái đầu tiên là sư đệ phải post lên chương trình viết và chạy Pascal.
còn cái mình muốn hỏi tí là hồi xưa chạy pascal hay bị lỗi 200 do máy nhanh quá. Khắc phục thế nào nhỉ, hồi xưa làm rồi ma wen mất, h hỏi lại để lỡ may ai gặp thì biết đừơng


Logged

Colosseo
Thành viên danh dự
****

Nhận xét: +37/-4
Cảm ơn
-Đã cảm ơn: 0
-Được cảm ơn: 30

Offline Offline

Giới tính: Nam
Bài viết: 388


*************** ***************
Xem hồ sơ cá nhân WWW Email
« Trả lời #8 vào lúc: 04:33:13 PM Ngày 01 Tháng Chín, 2010 »

Lỗi đó dường như là lỗi Divide by zero. Ngày xưa, có 1 bản patch, chỉ cần copy vào thư mục cài đặt của Pascal là được. Mình nghĩ bây giờ với những phiên bản mới thì đã không còn lỗi đó nữa (không chắc chắn lắm vì hiện tại không còn dùng Pascal nữa).


Logged

Là où je t'emmènerai Nghỉ 1 tháng.
Trần Triệu Phú
Giáo Viên
Administrator
Lão làng
*****

Nhận xét: +32/-11
Cảm ơn
-Đã cảm ơn: 108
-Được cảm ơn: 179

Offline Offline

Giới tính: Nam
Bài viết: 792

Loving and Dying for my God

trieuphu05
Xem hồ sơ cá nhân WWW Email
« Trả lời #9 vào lúc: 05:58:09 PM Ngày 01 Tháng Chín, 2010 »

đúng rồi, lỗi đó bị hỉu nhầm là "Divide by zero" do tràn bộ nhớ với các máy có tốc độ trên 200Mh. H cũng k còn sài pascal nữa, hix, e đang ngâm và code cái Fortran


Logged

tinhoc
Moderator
Thành viên tích cực
*****

Nhận xét: +6/-3
Cảm ơn
-Đã cảm ơn: 48
-Được cảm ơn: 25

Offline Offline

Giới tính: Nữ
Bài viết: 225


¶v¶¥ £0\/€ F0R ¥0U

luckygirl_sorrymylove
Xem hồ sơ cá nhân Email
« Trả lời #10 vào lúc: 08:36:36 PM Ngày 01 Tháng Chín, 2010 »

thật tình là tinhoc ko rành và cũng khong giỏi những cái này cho lắm. tinhoc muốn học lập trình nhưng ko có thời gian  Embarrassed Embarrassed tinhoc lập topic này ra chỉ để giải thích cho các bạn cùng độ cấp lớp về những gì học trên lớp vì những gì trong sach thj` tinhoc hieu và chỉ viết các chương trình đơn giản trong học đường. ngoài ra tinhoc chưa tim hiểu hết pascal nên ko thể viết những chương trình khó được mong mọi ng thông cảm.
 mọi ng aj có bí quyết hoặc am hiểu nhiu` về pascal thj` rất mong mọi ng chia sẻ.
 Thanks!!!!!!
 


Logged
tinhoc
Moderator
Thành viên tích cực
*****

Nhận xét: +6/-3
Cảm ơn
-Đã cảm ơn: 48
-Được cảm ơn: 25

Offline Offline

Giới tính: Nữ
Bài viết: 225


¶v¶¥ £0\/€ F0R ¥0U

luckygirl_sorrymylove
Xem hồ sơ cá nhân Email
« Trả lời #11 vào lúc: 09:07:26 PM Ngày 01 Tháng Chín, 2010 »

các anh giúp em giải thích giùm em từng câu lệnh trong chương trình pascal viết game mini này vs. em nhìn ko hiểu 
 
Code:

uses crt;
var a:char;
    mx,my,i,d:byte;
    hx,hy:integer;
    score:integer;
    x,y:array[1..104] of byte;
    l:word;
const lbox=10; rbox=70;
      tbox=5; bbox=45;
      maxl=200;

Procedure DrawBox;
var i : byte;
Begin
  Textcolor(White);
  For i:=lbox-1 to rbox+1 do
    begin Gotoxy(i,tbox-1); write('x');
          Gotoxy(i,bbox+1); write('x');end;
  For i:=tbox-1 to bbox+1 do
    begin Gotoxy(lbox-1,i); write('x');
          Gotoxy(rbox+1,i); write('x');end;
end;

procedure win;
begin
     clrscr;
     textmode(150);
     gotoxy(25,13);
     textcolor(20);
     write('You are a Master with 70 point');
     readln;
     halt;
end;
procedure e;
var i : byte;
    t,b,l,r : byte;
Begin
  Textcolor(lightred);
  GotoXY(x[1],y[1]); Write('@'); Delay(500);
  GotoXY(x[1]-1,y[1]); Write('@');
  GotoXY(x[1]+1,y[1]); Write('@');
  GotoXY(x[1],y[1]-1); Write('@');
  GotoXY(x[1],y[1]+1); Write('@');
  Delay(500);
  t := tbox; r := rbox;
  b := bbox; l := lbox;
  Textcolor(LightGray);
  repeat;
  For i:=l to r do
    begin Gotoxy(i,t); write(':'); delay(1); end;
  For i:=t to b do
    begin Gotoxy(r,i); write(':'); delay(1); end;
  For i:=r downto l+1 do
    begin Gotoxy(i,b); write(':'); delay(1); end;
  For i:=b downto t+1 do
    begin Gotoxy(l,i); write(':'); delay(1); end;
  if l<r then l:=l+1; if t<b then t:=t+1; if b>t then b:=b-1; if r>l then r:=r-1;
  Until (l=r) and (t=b);
  t := tbox; r := rbox;
  b := bbox; l := lbox;
  repeat;
  For i:=l to r do
    begin Gotoxy(i,t); write(' '); delay(1); end;
  For i:=t to b do
    begin Gotoxy(r,i); write(' '); delay(1); end;
  For i:=r downto l+1 do
    begin Gotoxy(i,b); write(' '); delay(1); end;
  For i:=b downto t+1 do
    begin Gotoxy(l,i); write(' '); delay(1); end;
  if l<r then l:=l+1; if t<b then t:=t+1; if b>t then b:=b-1; if r>l then r:=r-1;
  Until (l=r) and (t=b);
  gotoxy(34,24);
  textcolor(LightRed);
  write('GAME OVER');
  gotoxy(30,1);
  textcolor(LightGreen);
  write('You ate ',d-3,' apples');
  gotoxy(30,2);
  write('You got ',score,' scores');
  readln;
  halt;
end;

begin
  randomize;
  d:=3;
  hx:=1;
  mx:=random(rbox-lbox+1)+lbox;
  my:=random(bbox-tbox+1)+tbox;
  x[1]:=40;
  y[1]:=25;
  textmode(1000);
  repeat
    textcolor(15);
    score:=0;
    clrscr;
    write('Choose Level (1..10) : ');readln(l);
  until l in[1..10];
  l:= maxl div l;
  textcolor(0);
  clrscr;
  repeat
    repeat
      textcolor(8);
      gotoxy(lbox-1,1); write('Developed by Augustine Bui');
      textcolor(Yellow);
      gotoxy(rbox-12,1); write('Apples : ',(d-3):5);
      Gotoxy(lbox-1,2); write('Speed : ',maxl-l);
      gotoxy(rbox-6-6,2);write('Scores : ',score:5);
      gotoxy(mx,my); textcolor(14);write('*');
      DrawBox;
      for i:= d+1 downto 2 do
        begin
          x[i]:=x[i-1];
          y[i]:=y[i-1];
        end;
      x[1]:=x[1]+hx;
      y[1]:=y[1]+hy;
      if (x[1]>rbox)or(x[1]<lbox)or(y[1]>bbox)or(y[1]<tbox) then e;
      For i:= d+1 downto 2 do
        if (y[1]=y[i]) and (x[1]=x[i]) then e;
      gotoxy(x[d+1],y[d+1]);textcolor(0); write(' '); (* Xoa Node duoi *)
      if (y[1]=my) and (x[1]=mx) then
        begin
          d:=d+1;
          sound(1000);
          delay(75);
          nosound;
          l:=l-2;
          gotoxy(x[1],y[1]);
          textcolor(LightGreen);
          write(#1); (* Ve Them 1 node dau *)
          score:=score + ((maxl-l)*10)div 10;
          mx:=random(rbox-lbox+1)+lbox;
          my:=random(bbox-tbox+1)+tbox;
        end;
      if d=78 then win;
      textcolor(LightGreen);
      gotoxy(x[1],y[1]);
      write('@');
      gotoxy(x[2],y[2]);
      write('c');
      textcolor(0);
      Gotoxy(1,1);
      delay(l);
    until keypressed;
    a:=readkey; if a= #0 then a:= readkey;
    case a of
      #75: if hx=0 then begin hx:=-1; hy:=0; end;
      #77: if hx=0 then begin hx:=1; hy:=0; end;
      #72: if hy=0 then begin hx:=0; hy:=-1; end;
      #80: if hy=0 then begin hx:=0; hy:=1; end;
      'd': d:=d+1;
    end;
  until a =#27;
end.
nguồn code http://softvnn.com/forum/showthread.php?t=178091
thanks moi ng!!!!
« Sửa lần cuối: 07:50:38 PM Ngày 14 Tháng Chín, 2010 gửi bởi tinhoc »

Logged
Colosseo
Thành viên danh dự
****

Nhận xét: +37/-4
Cảm ơn
-Đã cảm ơn: 0
-Được cảm ơn: 30

Offline Offline

Giới tính: Nam
Bài viết: 388


*************** ***************
Xem hồ sơ cá nhân WWW Email
« Trả lời #12 vào lúc: 10:41:52 AM Ngày 02 Tháng Chín, 2010 »

1   uses    crt;
2
3   var    a:char;
4           mx,my,i,d:byte;
5         hx,hy:integer;
6         score:integer;
7         x,y:array[1..104] of byte;
8         l:word;
9   const    lbox=10; rbox=70;
10         tbox=5; bbox=45;
11         maxl=200;
12   //=================================================
13   Procedure DrawBox;
14      var i : byte;
15
16   Begin
17      
18      Textcolor(White);
19      
20      For i:=lbox-1 to rbox+1 do
21      
22         begin Gotoxy(i,tbox-1); write('x');
23            Gotoxy(i,bbox+1); write('x');end;
24      
25      For i:=tbox-1 to bbox+1 do
26      
27         begin Gotoxy(lbox-1,i); write('x');
28            Gotoxy(rbox+1,i); write('x');end;
29   end;
30   //=================================================
31
32   //=================================================
33   procedure win;
34
35   begin
36      clrscr;
37      textmode(150);
38      gotoxy(25,13);
39      textcolor(20);
40      write('You are a Master with 70 point');
41      readln;
42      halt;
43   end;
44   //=================================================
45
46
47
48   //=================================================
49   procedure e;
50
51      var i : byte;
52          t,b,l,r : byte;
53
54   Begin
55     Textcolor(lightred);
56       GotoXY(x[1],y[1]); Write('@'); Delay(500);
57     GotoXY(x[1]-1,y[1]); Write('@');
58     GotoXY(x[1]+1,y[1]); Write('@');
59     GotoXY(x[1],y[1]-1); Write('@');
60     GotoXY(x[1],y[1]+1); Write('@');
61     Delay(500);
62 
63      t := tbox; r := rbox;
64      b := bbox; l := lbox;
65     Textcolor(LightGray);
66
67
68     repeat;
69
70        For i:=l to r do
71             begin Gotoxy(i,t); write(':'); delay(1); end;
72
73        For i:=t to b do
74            begin Gotoxy(r,i); write(':'); delay(1); end;
75            
76         For i:=r downto l+1 do
77            begin Gotoxy(i,b); write(':'); delay(1); end;
78            
79         For i:=b downto t+1 do
80            begin Gotoxy(l,i); write(':'); delay(1); end;
81            
82         if l<r then l:=l+1; if t<b then t:=t+1; if b>t then b:=b-1; if r>l then r:=r-1;
83         
84      Until (l=r) and (t=b);
85   
86   
87     t := tbox; r := rbox;
88      b := bbox; l := lbox;
89      
90      
91      repeat;
92      
93         For i:=l to r do
94            begin Gotoxy(i,t); write(' '); delay(1); end;
95            
96         For i:=t to b do
97            begin Gotoxy(r,i); write(' '); delay(1); end;
98            
99         For i:=r downto l+1 do
100            begin Gotoxy(i,b); write(' '); delay(1); end;
101            
102         For i:=b downto t+1 do
103            begin Gotoxy(l,i); write(' '); delay(1); end;
104            
105         if l<r then l:=l+1; if t<b then t:=t+1; if b>t then b:=b-1; if r>l then r:=r-1;
106         
107      Until (l=r) and (t=b);
108      
109      
110      gotoxy(34,24);
111      textcolor(LightRed);
112      write('GAME OVER');
113      
114      gotoxy(30,1);
115      textcolor(LightGreen);
116      write('You ate ',d-3,' apples');
117      
118      gotoxy(30,2);
119      write('You got ',score,' scores');
120      readln;
121      halt;
122
123   end;
124   //=================================================
125
126
127
128
129   //=================================================
130   begin
131
132     randomize;
133      d:=3;
134      hx:=1;
135      mx:=random(rbox-lbox+1)+lbox;
136      my:=random(bbox-tbox+1)+tbox;
137      x[1]:=40;
138      y[1]:=25;
139      textmode(1000);
140      
141      
142      
143     repeat
144
145         textcolor(15);
146         score:=0;
147         clrscr;
148         
149         write('Choose Level (1..10) : ');readln(l);
150         
151      until l in[1..10];
152
153      l:= maxl div l;      
154      
155
156      textcolor(0);
157      clrscr;
158      
159      
160      repeat
161      
162         repeat
163         
164            textcolor(8);
165            gotoxy(lbox-1,1); write('Developed by Augustine Bui');
166            
167            textcolor(Yellow);
168            gotoxy(rbox-12,1); write('Apples : ',(d-3):5);
169            Gotoxy(lbox-1,2); write('Speed : ',maxl-l);
170            gotoxy(rbox-6-6,2);write('Scores : ',score:5);
171            
172            gotoxy(mx,my); textcolor(14);write('*');
173            
174            DrawBox;
175            
176            for i:= d+1 downto 2 do
177            
178               begin
179                 x:=x[i-1];
180                 y:=y[i-1];
181               end;
182               
183               
184            x[1]:=x[1]+hx;
185            y[1]:=y[1]+hy;
186          
187            if (x[1]>rbox)or(x[1]<lbox)or(y[1]>bbox)or(y[1]<tbox) then e;
188    
189            For i:= d+1 downto 2 do
190            
191               if (y[1]=y) and (x[1]=x) then e;
192               
193            gotoxy(x[d+1],y[d+1]);textcolor(0); write(' '); (* Xoa Node duoi *)
194         
195            if (y[1]=my) and (x[1]=mx) then
196               begin
197                  d:=d+1;
198                  sound(1000);
199                  delay(75);
200                  nosound;
201                  l:=l-2;
202                  gotoxy(x[1],y[1]);
203                  textcolor(LightGreen);
204                  write(#1); (* Ve Them 1 node dau *)
205                  score:=score + ((maxl-l)*10)div 10;
206                  mx:=random(rbox-lbox+1)+lbox;
207                  my:=random(bbox-tbox+1)+tbox;
208               end;
209            
210            
211            if d=78 then win;
212         
213            textcolor(LightGreen);
214            gotoxy(x[1],y[1]);
215            write('@');
216            gotoxy(x[2],y[2]);
217            write('c');
218            textcolor(0);
219            Gotoxy(1,1);
220            delay(l);
221            
222            
223            until keypressed;
224         
225         a:=readkey; if a= #0 then a:= readkey;
226         
227         case a of
228            #75: if hx=0 then begin hx:=-1; hy:=0; end;
229            #77: if hx=0 then begin hx:=1; hy:=0; end;
230            #72: if hy=0 then begin hx:=0; hy:=-1; end;
231            #80: if hy=0 then begin hx:=0; hy:=1; end;
232            'd': d:=d+1;
233         end;
234      
235      until a =#27;
236      
237      
238   end;
//=================================================


Logged

Là où je t'emmènerai Nghỉ 1 tháng.
Colosseo
Thành viên danh dự
****

Nhận xét: +37/-4
Cảm ơn
-Đã cảm ơn: 0
-Được cảm ơn: 30

Offline Offline

Giới tính: Nam
Bài viết: 388


*************** ***************
Xem hồ sơ cá nhân WWW Email
« Trả lời #13 vào lúc: 10:43:13 AM Ngày 02 Tháng Chín, 2010 »

Trước tiên, mình chia lại chương trình cho dễ đọc và đánh số các dòng lệnh cho dễ giải thích.

Theo link bạn đưa ra, đây là game con rắn ăn quả táo. Khi biết được ý tưởng của chương trình thì ta mới dễ dàng theo dõi. Người viết chương trình không hề có một ghi chú nào cả, nên người khác đọc vào rất khó hiểu.

Chương trình này vận dùng hầu hết tất cả các kỹ năng lập trình cơ bản (biến, mảng, vòng lập (for, repeat), điều kiện (if), lựa chọn (case of), đọc phím được nhấn, thủ tục (procedure), âm thanh (sound), tạm dừng chương trình (delay),…).

Việc giải thích một cách cận kẽ chương trình sẽ rất dài dòng, và đôi khi là không thể được vì có những chỗ ta không nắm được ý của tác giả. Ở đây, mình chỉ giải thích theo khả năng có thể. Bạn nghiên cứu thêm, có chi tiết nào không hiểu thì hãy hỏi để đào sâu hơn. Với những câu lệnh bạn không hiểu thì hãy nhớ đến… Google.


Cấu trúc chương trình:

Dòng 1-->11 : Khai báo biến và các hằng số.

Dòng 13-->29: thủ tục “drawbox”. Cái này dùng để vẽ một khung hình chữ nhật trên màn hình (cmd).

Dòng 33-->43 : thủ tục “win”. Cái này sẽ được gọi đến khi người chơi đã thắng. Có lẽ vì vậy mà nó có tên là “win”.

Dòng 49-->123 : thủ tục e. Cái này sẽ được gọi khi người chơi bị thua. “e” có lẽ là từ đầu tiên của “end” (kết thúc). Tác giả  không dùng tên “end” vì “end” từ khóa của ngôn ngữ lập trình.

Dòng 130 cho đến hết: thân chương trình chính.


Logged

Là où je t'emmènerai Nghỉ 1 tháng.
Colosseo
Thành viên danh dự
****

Nhận xét: +37/-4
Cảm ơn
-Đã cảm ơn: 0
-Được cảm ơn: 30

Offline Offline

Giới tính: Nam
Bài viết: 388


*************** ***************
Xem hồ sơ cá nhân WWW Email
« Trả lời #14 vào lúc: 10:46:32 AM Ngày 02 Tháng Chín, 2010 »

Phần 1 : Khai báo biến và hằng số

(Dòng 1) uses crt : sử dụng module crt của Pascal. Sử dụng module này để có thể gọi hàm xóa màn hình clrscr (dòng 36, 147,…).

(Dòng 3) khai báo biến a, kiểu ký tự. Biến a này sẽ được dùng để lưu trữ phím được gõ từ người chơi. Ví dụ như là thoát chương trình, di chuyển con rắn chạy lên xuống, chạy qua trái phải,… Biến a được dùng ở các dòng 255-->232.

(Dòng 4) mx, my là tọa độ của các trái táo. Các trái tạo sẽ được tạo một cách ngẫu nhiên (random) ở các dòng 135, 136, 206, 207.

(Dòng 4) i là một biến dùng để làm chỉ số chạy trong các vòng lập for. d là số quả táo con rắn ăn được.

(Dòng 5) hx, hy là độ dịch chuyển thêm của con rắn. Ví dụ, khi rắn dịch chuyển xuống dưới thì hx=0, hy=+1; lên trên thì hx=0, hy=-1; qua trái thì hx=-1, hy=0; qua phải thì hx=+1, hy=0. Hai biến này dùng ở dòng 227-->232

(Dòng 6) score là điểm số người chơi nhận được

(Dòng 7) khai báo x, y là các mảng có chứa tối đa 104 giá trị. Hai mảng này dùng để chứa tọa độ của các đốt tạo nên con rắn. Từ đó có thể di chuyển, xác định xem rắn có ăn được trái táo, hai có bị đụng vào tường hay không.

(Dòng 8) l là level (cấp bậc). Dùng để chứa cấp độ hiện tại của game. Có 10 cấp độ. Các cấp độ khác nhau ở tốc độ di chuyển của con rắn (l càng lớn, tốc độ càng nhanh).

(Dòng 9-->11) khai báo các hằng số. Các hằng số này gồm có vị trí của cái hộp (box) giới hạn phạm vi di chuyển của con rắn (lbox, rbox, tbox, bbox  sẽ tương ứng là left_, right, top, bottom (trái, phải, trên, dưới)). maxl=200 sẽ được dùng để tính tốc độ di chuyển của con rắn. Biến này sẽ có liên quan đến biến l ở trên.


Logged

Là où je t'emmènerai Nghỉ 1 tháng.
Tags:
Trang: 1 2 3 »   Lên
  In  
sch

Những bài viết mới nhất
Những bài viết mới nhất
 
Chuyển tới:  


Tắt bộ gõ tiếng Việt [F12] Bỏ dấu tự động [F9] TELEX VNI VIQR VIQR* kiểm tra chính tả Đặt dấu âm cuối
Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC © 2006 - 2012 Thư Viện Vật Lý.