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
Giới tính: 
Bài viết: 225
¶v¶¥ £0\/€ F0R ¥0U
|
 |
« 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
Giới tính: 
Bài viết: 225
¶v¶¥ £0\/€ F0R ¥0U
|
 |
« 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ì 
|
|
|
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
Giới tính: 
Bài viết: 225
¶v¶¥ £0\/€ F0R ¥0U
|
 |
« 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
|
 |
« 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
|
|
|
|
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
Giới tính: 
Bài viết: 225
¶v¶¥ £0\/€ F0R ¥0U
|
 |
« 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
|
 |
« 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
|
|
|
|
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
Giới tính: 
Bài viết: 225
¶v¶¥ £0\/€ F0R ¥0U
|
 |
« 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  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
Giới tính: 
Bài viết: 792
Loving and Dying for my God
|
 |
« 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
|
 |
« 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
|
|
|
|
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
Giới tính: 
Bài viết: 792
Loving and Dying for my God
|
 |
« 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
Giới tính: 
Bài viết: 225
¶v¶¥ £0\/€ F0R ¥0U
|
 |
« 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  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
Giới tính: 
Bài viết: 225
¶v¶¥ £0\/€ F0R ¥0U
|
 |
« 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 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=178091thanks 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
|
 |
« 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
|
|
|
|
Colosseo
|
 |
« 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
|
|
|
|
Colosseo
|
 |
« 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
|
|
|
|
|