Tải bản đầy đủ (.doc) (17 trang)

Xây dựng giải thuật và cài đặt trò chơi đoán màu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (536.82 KB, 17 trang )

Niên luận 1

Trò chơi đoán màu

Phần I:
II:
LỜI QI<ỚI THIỆU
Quan điểm của giáo dục ĐH hiện nay là rèn luyện tu duy cho sinh viên
hơn
là cung cấp kiến thức. Ngay cả các bậc học thấp hơn như THPT phương pháp dạy
Chương
1: thống
gióiđược
thiệuthay
trò choi.
học
truyền
dần và lấy tích cực của người học làm trung tâm,
giáo
chung,định
trò hướng.
chơi đoán
màu pháp
là mộtnày
trònhằm
chơi rèn
không
đòi tưhỏiduy
nhiều

viên chỉNhìn


là người
Phương
luyện
người
thuyết,
cũng
như
các
khái
niệm
liên
quan.

thế
nói
chỉ
cần
nắm
vững
một
ngôn
học.
ngữ lậpcuộc
trìnhsống
cấu thường
trúc nàongày,
đó làtrong
có thểgiao
cài tiếp
đặt chương

trình.
Trong
cũng như
trong công việc, nếu một
1.1có
Tổng
quáttốthóa
đề tài:
người
tư duy
chắc
chắn sẽ xử lí các tình huống, các sự cổ tốt hơn một
người Trò chơi có M màu khác nhau nào đó, (M>1).
kém tư Một
duy. dãy gồm N màu được xây dựng ngẫu nhiên bằng cách chon ra từ M
màu trên.
người
chơi
chỉtưraduy,
đúng
từng
màunhóm
trongcho
dãyhọc
N
Có Công
nhiều việc
phương
pháp
rènphải

luyện
thívịdụtríviệc
phân
màu,
sinh tự nghiên cứu bài học cũng là một cách trên ghế nhà trường, hay việc luyện
nếutính
chính
xác cả
4 vịcótríthế
sẽ là
chiến
thắng,trí
ngược
lại sẽcách
thua.nhớ lại kí ức,...
tập
nhẩm,
cũng
rèn luyện
nhớ bằng
Độ trí
khóthông
tăngminh
lên theo
vòngtrọng
chơi trong
kế tiếp
theo
quyđờluật:
M=M+1,

N là
vẫn
Nói chung
rất quan
cuộc
sống
thường,
và nhất
được
đoi
với các bạn học sinh, sinh viên điều này càng cần thiết hơn.
giữ nguyên.
chơi
sẽ kết
saumột
một trò
số vòng
hạn
nàochất
đó. suy luận và
Tiện Và
đây,tròxin
được
giớithúc
thiệu
chơi hữu
mang
tính
lôgic1.2 Giói hạn đề tài:
rất cao,Giới

đó làhạn
Trò
Đoán
Và trò chơi này sẽ ít nhiều cho những đổi
lạiChoi
vấn đề
trên Màu.
như sau:
tượng
trí tuệ
cũng
những
muốn thử
- rèn
M luyện
tù’ 4 đến
7; tức
là như
Min(M)
= 4người
và Max(M)
= 7.sức mình..
1.1
cầuphần
đề tài:
- Yêu
Thành
M màu được chọn: Đỏ, Xanh dương, Xanh lá, Vàng, Lam,
Trò
chơi

“Đoán
màu” được thể hiện: có từ 4 đến 7 màu, người chơi một
Tím,
lần
Trắng.
đoán- 4 màu.
sẽ đánh
lầnchơi.
đoán và cho biết số vị trí đoán đúng. Sau
N = 4,Máy
và không
đốigiá
mỗimỗi
vòng
10
- Các vòng chơi:
lần đoán máy sẽ cho kết quả người chơi thắng hay thua.
Vòng 1 ứng với M = 4,
gồm 4 màu:Đỏ, Xanh dương, Xanh lá, Vàng.
1.2 Mục tiêu:
Vòng 2 ứng
với vũng
M = 5,
gồmBorland
5 màu:Đỏ,
Xanh
Nắm
ngôn ngũ'
Pascal
7.0.dương, Xanh lá, Vàng, Lam.

Vòng 3 ứng
vớicách
M =trình
6, bày
gồm
6 màu:Đỏ,
Xanh dương, Xanh lá, Vàng, Lam,Tím.
Học
khoa
học đề tài.
Vòng 4 ứng với M = 7,
gồm 7 màu:Đỏ, Xanh dương, Xanh lá, Vàng, Lam,Tím,
Lời
cảm
tạ:
Trắng.
Sau gần 2 tháng thực hiện, giò' đây niên luận 1 của em đã hoàn thành. Căn
=> Như vậy có 4 vòng chơi, N vẫn là 4, nhưng số màu M tăng 1 mỗi vòng
bản niên luận đúng theo yêu cầu đề tài. Đó là nhờ nổ lực của bản thân, cũng như
sẽ là nhận
độ khó
tăngsựlên.
nhờ
được
hướng dẫn của quý thầy cô. Dù đã hoàn thành, nhung chắc
chắn Theo yêu cầu đề tài toát lên 3 vấn đề quan trọng sau: Trước hết: phải có
một dãy
màu được
ra một
cách

nhiên
một
danh

không
thế4 tránh
khỏi tạo
nhũng
sai sót
dongẫu
hạn chế
về từ
khả
năng
củasách
bảnmàu
thânsẵn
cũng
cho
người
chơi
đoán,
thứ
hai:
chọn
lựa
màu
từ
phía
người

chơi,
thứ
ba:
so
sánh
như
sự giới
lựa chọn
lựathời
củagian.
ngườiEm
chơi
dãy nhận
ngẫu được
nhiênnhững
đó. Ngoài
rađóng
việc thiết
kế giao
do
hạn về
rấtvà
mong
ý kiến
góp quý
báu
diện
người
dùng
cũng


vấn
đề
quan
trọng
giúp
trò
chơi
thành
công
hơn.
của quý thầy cô đế niên luận em được hoàn thiện hơn.
Chân thành cảm ơn!
21


Niên luận 1

Trò chơi đoán màu

Trong các ngôn ngữ lập trình như c, Pascal, VB có một hàm được định
nghĩa trước thõa mãn tính chất trên - đó là hàm ngẫu nhiên. Hàm ngẫu nhiên
trong Pascal: Random với cú pháp như sau Random(a); với a kiếu Word, hàm
này
cho giá trị là một số nguyên ngẫu nhiên trong phạm vi từ 0 đến a-1.
Nhận thấy đây sẽ là sự chọn lựa tốt nhất cho việc xây dãy màu ngẫu nhiên. Với ý
tưởng như sau:
Mỗi lần dùng hàm sẽ được một con số, con số đó như một từ khóa cho ta
một màu nào đó tự’ ta định nghĩa. Thí dụ: kết quả là 0 sẽ là màu đỏ, 1 sẽ cho ta
màu xanh,.. .và ta chỉ việc lưu lại kết quả. Khi cho vòng lặp chạy 4 lần ta sẽ có 4

màu. Ta dùng tham số thực tế trong hàm Random chính là số màu của từng vòng
chơi. Cụ thế viết tống quát Random(<Số màu>); số màu là tổng số màu của dãy
mà máy phải chọn, nói cách khác nó là tống số màu của một vòng nào đó. Có
thể
dùng một mảng đế lun kết quả. Thí dụ dùng mảng A lun các giá trị màu.
Cụ thể bưóc lặp như sau:
Bl: Gán i=l;
B2: Trong khi (i<=4) làm các công việc.
Random(số màu);
Lấy kết quả hàm Random(số màu) gán màu cho A[i].

3


Trò chơi đoán màu

Niên luận 1
Lưu đồ máy chọn màu ngẫu nhiên:

Vào số màu

Sai
Kết thúc

Đoạn cài đặt hàm chọn màu ngẫu nhiên bằng ngôn ngữ Pascal:

4


Niên luận 1


Trò chơi đoán màu

procedure chonmaungaunhien(somau:word;var dmrday);
var color,i:word;
begin
randomize;
for
i:=l
to
4
do
begin
color:=(random(somau))
;
case
color
of
0: dm[i]:='do';
1: dm[i]:-xanh';
2: dm[i]:-la’;
3: dm[i]:-vang’;
4: dm[i]:='lam’;
5: dm[i]:-tim';
6: dm[i]trang';
else
halt;
end;
end;
end;

2.2 Lượt chọn màu của người choi.
Sau khi đã có được bước thứ nhất là chọn được dãy 4 màu, tiếp theo sẽ là
việc xây dựng lựa chọn của người chơi.
Bây giờ ta xây dựng việc chọn màu; có hai cách cho việc này: người chơi
dùng bàn phím hoặc chuột đế chọn màu.
Thứ nhất:
Dùng bàn phím, người chơi chọn màu bằng cách ấn bàn phím, nếu ấn một
trong các phím màu thích hợp thì sẽ được chấp nhận và kết quả sẽ được lưu lại,
nếu ấn sai các phím đó, người chơi sẽ phải ấn tiếp đến khi nào được chấp nhận,

nghĩa là đã chọn thích hợp. Và sự lựa chọn này được thực hiện 4 lần.
Thứ hai:
Sử dụng chuột, tương tự như bàn phím, người chơi chỉ khác bằng cách
Click chuột ngay nút màu tương ứng muốn chọn, nếu Click ngay vùng màu này
thể hiện, màu này được lun lại, nếu Click sai vị trí, tương tự’ như ấn bàn phím,
người chơi phải Click đến khi nào được chấp nhận. Và sự lựa chọn vẫn phải thực
hiện 4 lần.
Xét cho cùng, việc dùng bàn phím hay chuột cùng một cách xây dựng
giải
thuật. Minh họa giải thuật bằng ngôn ngữ giả:
5


Trò chơi đoán màu

Niên luận 1

Biểu diển giải thuật trên một cách khác bằng lưu đồ dưới đây:
Lưu đồ người chơi chọn lựa 1 lượt 4 màu
( Bắt đầu )


i=1

Kct thúc
Sau đây đoạn cài đặt bằng ngôn ngữ Pascal dùng bàn phím chọn màu, việc dùng
chuột không trình bày ở đây vì tương tự chỉ sai khác đôi chút:
doan mau bang ban phim- }
procedure select_keyboard(dem:word; var colorl :day;var thoattructiep:boolean);
var
i,m:integer;
mau:char;
x,y,k:integer;
ngung:boolean;
6


Màu
1
Màn
7
Màn
7
Màn
4

Màn
1
Màn
Khác
7.

Trò chơi đoán màu
Niên luận 1
Màn
7
Màn
begin
4Đây là vấn đề then chốt của trò chơi, có thể hình dung bằng hình ảnh
tượng x:=265;
y:=165;
trung sau
đây
cho
một
lượt đoán(4 màu):
k:=0;
i:=l;
Máy chọn:
Người chơi chọn:
Ket quả
Đĩinn
thoattructiep:=false;
while (i<=4) and (thoattructiep=false)
do
begin
mau:=readkey;
mau:=upcase(mau);
ngung:=true;
Neu tống số Đúng của cột kết quả = 4 thì người chơi chiến thắng(ớ’ đây
repeat
chỉ

if củanot
ngung
đề cập tới một vòng
trò chơi).
then
Tuy nhiên theo yêu cầu, người chơi có tới 10 lượt đoán trong một vòng
begin
chơi, nếu đoán sai, dãy màu máy chọn vẫn được giữ nguyên, người chơi thực
ngung:=true;
hiện
lượt đoán tiếp theo chomau:=readkey;
tới hết lượt thứ 10, nếu đoán đúng 4 màu tại bất kì lượt
nào
mau:=upcase(mau);
thì sẽ thắng. Khi đó
việc
end; dùng vòng lặp không xác định là giải pháp tối ưu cho
vấn
mau
đề này, tức là:case
vòng
lặpofsẽ thực hiện đến khi nào người chơi hoặc đoán đúng 4
màu theo thứ tự của 'D':begin
dãy hoặccolorl[i]:='do';m:=4;
đã đoán hết 10 lượt,end;
một trong hai xảy ra sẽ kết
'G':begin colorl[i]:='la';m:=2; end;
'V':begin colorl[i]:-vang'; m:=14; end;
'X':begin colorl[i]:='xanh'; m:=l; end;
'L':begin colorl[i]:='lam'; m:=3; end;

'T':begin colorl[i]:='tim'; m:=5; end;
'W':begin colorl[i]:='trang'; m:=15; end;
'E':
tho
attruc
tiep:
=true;
else begin write(#7); ngung:=false;
end;
end;
until
ngung
or
thoattructiep=true;
if
thoattructiep=false
then
begin
nut(x+k,y+dem*30,m);
k:=k+30;
end;

Giống

87


Trò chơi đoán màu

Niên luận 1

Lưu đồ so sánh màu tìm số đúng:
Bắt đầu
Số lượt = 0
Máy chọn màu

9


Niên luận 1

Trò chơi đoán màu

Đoạn cài đặt:
chonmaungaunhỉen(somau,dm);
dem:=0;{ dung:=0;}
{dem=0 dùng dem so luot}
if selectmouse then nutmouse
else nut keyboard;
setcolor(2);
level(somau);
thoattructiep:=false;
while (dung<>4) and (demolO) and (thoattructiep=false) do
begin
if selectmouse
{chọn màu bằng chuột}
then doanmau(dem,colorl,thoattructỉep)
else
{chọn màu bằng phím}
seỉect_keyboard(dem,coIorl,thoattructiep);
dung:=0;

if thoattructiep=false then begin
for i:=l to 4 do
if (dm[i|=colorl [ỉ]) then dung:=dung+l;
xuatkq(dung,dem);
dem:=dem+l;
if select mouse then nutmouse
else nut keyboard;
end
else exit;
end;
Phần mã code nhạt trong đoạn chương trình vẫn có những chức năng
nhất
định, tuy nhiên, trình bày như vậy cho dễ thấy hơn. Hơn nữa, vẫn còn dính vào
biến Thoattructiep kiểu Boolean dùng thoát chương trình lúc đang chơi mà
giải
thuật không đề cập tới, vì nó chỉ là một tính năng nhúng vào.
2.4 Giao diện ngưòi dùng.
2.4.1 Xây dụng chọn lựa bằng chuột:
Khi bắt đầu chương trình, hoặc khi kết thúc một vòng chơi, cũng như là
chiến thắng cả vòng cuối cùng, một hộp thoại tùy chọn sẽ xuất hiện. Người

10


Trò chơi đoán màu

Niên luận 1

X2


(Xmouse,Ymouse)

XI
Y
Y1
Y2
Vùng màu xanh tượng trưng cho vùng chọn thích hợp, đối với trong
chưong trình các vùng này là nút chọn, tức là nếu click vào vùng này sẽ có một
tác
dụng nào đó như chọn màu hoặc là thoát, nếu click ra ngoài thì click đó không có
tác dụng. Giải quyết vấn đề này như sau:
Nấu đồng thời:
Xmouse >= XI và Xmouse <= X2 và Ymouse >= Y1 và Ymouse <=
Y2
Thì kết quả là vùng chọn thích hợp và được chấp nhận.
Ngược lại người choi phải click chọn tiếp tục đến khi vùng click thích hợp.


Trò chơi đoán màu

Niên luận 1
Lưu đồ người choi tùy chọn
C^^Bắt đầu

Thực hiện theo yêu cầu

Kết thúc

Thí dụ một đoạn tùy chọn:
{hàm kiếm tra vị trí con trỏ có trong phạm vi xl,yl,x2,y2 không}

function check_botton(xl,yl,x2,y2:integer):boolean;
begin
if ((xmouse>xl) and (xmouse<x2) and (ymouse>yl) and (ymousethen check_botton:=true { vị trí con trỏ nằm trong hình chủ' nhật cho kết quả
đúng}
else
check_botton:=false;
end;
{ minh họa việc bấm chuột tại các vị trí}
select:
12


Niên luận 1

Trò chơi đoán màu

waitmousepress;
{ chờ nhấp chuột}
getmouseposition(xmouse,ymouse); {lấy vị tri chuột}
if
check_botton(202,222,318,288)
then
select_mouse:=true
else
if
check_botton(322,222,43
8,288)
then
select_mouse:=false

else goto select;
Đoạn chương trinh trên chờ ấn chuột, có gọi đến hàm kiểm tra vị trí giới
hạn bởi hình chữ nhật với các tọa độ lần lượt xl,yl,x2,y2. Neu click vào
(202,222,318,288) thì sẽ thực hiện lệnh gán selectmouse là true. Neu click vào
vùng chữ nhật (322,222,438,288) sẽ gán select_mouse là false. Ó đây,
select mouse là điều kiện kiếm tra việc người chơi dùng chuột (nếu đúng) và
dùng
bàn phím (nếu sai).
Neu không click vào hai vị trí trên thì phải click lại, tức chương trình thực
lệnh nhảy đến nhản select buộc người chơi lựa chọn lại nếu nhấp ra bên ngoài 2
vùng trên.
2.4.2 Xử lý chuột:
Muốn thực hiện được sự chọn lựa bằng chuột thay vì bằng bàn phím
thông
thường là một vấn đề không đơn giản, việc định nghĩa các thủ tục về xử lý chuột
khá phức tạp và rất khó, do phải nhúng các đoạn mã từ lập trình hệ thống
Procedure MouseShow;
Begin
Regs.ax
:=
$1;
intr($33,Regs
);
End;
Án chuột:
Procedure MouseHide;
Begin
Regs.ax
:=
$2;

intr($33,Regs
);
End;
Chờ nhấn chuột:
13


Niên luận 1

Trò chơi đoán màu

end;
Click chuột:
function mouseclickichar;
var n:char;
begin
regs.ax:=$003;
intr($33,regs);
if(regs.bx and 1)=1 then n:-L';
if(regs.bx and 2)=2 then n:='R';
mouseclick:=n;
end;
Lẩy tọa độ con trỏ:
procedure getmouseposition(var xmouse,ymouse:integer);
begin
regs.ax:=$0003;
intr($33,regs);
xmouse:=regs.cx;
ymouse:=regs.dx;
end;

Trong đó regs là kiếu thanh ghi Registers;
Ngoài ra trong thư viện Pascal 7 có cung cấp một thư viện chuột
MOƯSE.TPU khá phong phú, nếu tự tạo các hàm xử lý chuột sẽ gặp khó khăn do
sử
dụng ngắt mềm và đụng chạm khá nhiều thanh ghi; tuy nhiên nếu tự định nghĩa
lại
thì sẽ dễ dàng hon cho sử dụng, cụ thể dễ nhớ tên hàm. vấn đề này không có gì
mới mẽ, việc trình bày dù không mang nhiều ý nghĩa, nhung thuận lợi hơn cho
việc lập trình.
2.4.3 Vấn đề đồ họa khác:
Việc kẻ khung chọn màu, đặt màu nền, màu chữ,.. .tất cả dùng nhũng thủ
tục được định nghĩa trong thư viện đồ họa Graph xây dựng sẵn.
2.5 Tống quát của trò choi.
Tập hợp tất cả các vấn đề nêu trên theo một trình tự’ hợp lý sẽ tạo thành

14


LE
Contain 
colors :

VE

L

2

#•#
Niên luận 1


Trò chơi đoán màu

Neu người choi dùng chuột sẽ có giao
Bắtdiện
đầu như sau:
Thành phần màu hiến thị
bên phải cụm từ:Contain
colors. 4 màu ngẫu nhiên
được chọn từ đây.
Danh sách màu dưới
dòng:You choose color
from...là khu vực người
chơi chọn bằng cách
Click chuột(chuột phải
hoặc).
Các màu tính theo hàng
ngang dưới dòng chữ
You choose Becoming
kèm theo các con số
tương ứng với lựa chọn tù' khu vục chọn, các con sổ là số vị trí đúng trong dãy
Outcome, tức đúng so với máy chọn.
Khi người chơi đúng 4 vị trí tại bất cứ lượt lựa chọn nào, sẽ thắng cuộc

Kết thúc
qua vòng kế tiếp số màu trên thành phần tăng thêm 1, cho tới vòng cuối cùng là
vòng 4 với số màu là 7. Hoặc nếu hết 10 lượt đón mà chưa đưa ra được kết quả
chương
nêntiếp
không

trìnhTrong
bày ởquá
đây.trình
Ản Ctrl
đúng sẽDo
thua
và cótrình
tùy khá
chọndài,
chơi
hoặctiện
dừng.
chơi+cóclick
thể
xem chương trình nguồn
Ngược lại người choi dùng bàn phím giao diện cũng không khác nhiều:
Chương 3:
Hưóng dẫn sử dụng:
Tương tự như việc
dùng chuột, chỉ khác
3.1 Hướng dẫn cài đặt:
cáchtừấn
tự
Ban đầu, chạy file Setup, đến bước nhập key, keylà lấy
filephím
text kí
kèm
thích
hợp
trong

thành
theo,
vùngchọn
chọnđường
màu
phải nhập key lthl003 chính xác mới cài tiếp được. Bước kếphần
tiếp như
có đặt
ghicócácchọn
kí tự
trên
đến ổ đĩa(vùng) cài đặt.. .Khi cài thành công, nếu bước cài
Create
đó
đại
diện
cho
màu.
Shortcut, thì trên Desktop xuất hiện biếu tượng có tên Selectcolors, việc cài
tương
Phím E có tác dụng
tụ1 các ứng dụng khác trên Windows.
thoát khỏi trò chơi.
Chọn Use Mouse->
dùng giao diện
chuột
đoán màu.
Chọn Key^dùng bàn
Please choose colors! Exit
Phím đoán màu.

16
15


Niên luận 1

Trò chơi đoán màu

Đoán sai sẽ có kết quả cho người chơi so sánh, ấn Enter sẽ có giao diện chọn lựa
phía dưới bên phải. Thoát: chọn Exit. Choi lại vòng vừa rồi: chọn Retry now.

Neu thắng vòng nào đó:

Thắng cuộc(thắng cả 4 vỏng chơi)

Chọn Continue tiếp tục chơi, trường hợp chưa chơi hết vòng 4 thì qua vòng kế
tiếp, chọn Exit sẽ thoát, Khi chơi hết vòng 4 (xuất hiện bảng bên phải) R e P I a y
sẽ
chơi lại từ đầu, Exit tương tự sẽ thoát.
Số 2 marks hay 4 marks là điểm mỗi vòng choi, điểm này tính theo lượt, nếu số
lượt đoán trong một vòng ít tính đến thời điếm đoán đúng-điếm cao; ngược lại thì
điểm thấp.
3.3 Gõ' bỏ ứng dụng.
Có thế gỡ bỏ úng dụng bằng một trong hai cách sau:
Cách /.•Vào: Start->Control Panel->Add or Remove Programs-^Change or
Remove Programs-^SelectcoIor 1.00 sau đó chọn Remove.

17



Trò chơi đoán màu

Niên luận 1
Phần III:
KẾT LUẬN VÀ ĐÁNH GIÁ
Chương 1:

Nhận xét kết quả đạt được:

Nhìn chung chương trình đáp ứng đúng yêu cầu của đề tài, hiện giờ tạm
thời vẫn chưa phát hiện lỗi (trừ những lỗi trên hệ điều hành sẽ đề cập tới sau)..
Sự tùy chọn dùng chuột hoặc bàn phím là linh hoạt đối với người chơi, thích hợp
đối với cả người quen dùng chuột và người quen với bàn phím. Trò chơi đoán
màu
không phải quá xa lạ với mọi người, tuy nhiên việc đưa con trỏ vào có thế xem là
một điều mới mẽ.
Do không phải là trò chơi dễ, lại mang tính chất suy luận cao, ngay cả bản
thân xây dựng chương trình mà cũng khó thắng liên tiếp 4 vòng, nên quyết định
nếu chơi thua, người chơi có quyền chơi lại vòng vừa rồi theo tùy chọn mà không
phải chơi lại tù’ đầu. Điều này giúp người chơi bớt nản; Chúng ta có the thấy rõ
điều này như sau: Vòng 1 gồm 4 màu, máy chọn 1 trong 4 sẽ có một tố hợp chập
1
của 4 sẽ có:4 cách chọn cho 1 vị trí thứ nhất, và vị trí thứ 2,3,4 tương tự. Vậy
muốn có một dây 4 màu do máy chọn thì máy chọn 4 lần. 4 màu như vậy theo
công thức nhân là:44=256 cách, trong khi đó người chơi chỉ có tổng số 40 lần
nhấp chuột chọn hoặc ấn phím thích hợp. Đó chỉ là vòng đơn giản nhất, vòng khó
nhất máy chọn 4 màu từ 7 màu, số khả năng xảy ra sẽ là 7-2401, trong khi số lần
ấn phím hoặc Click chuột tối đa của người chọn vẫn là con số 40. Tuy nhiên, theo
suy luận con số sẽ giảm đáng kể, song trên thực tế tới vòng 4, người chơi giỏi tới
mức độ nào đi chăng nữa thì cũng rất rất khó, yếu tố may mắn trở nên quan trọng

và cũng phải kể đến. Do đó, nếu thua mà chơi lại từ đầu sẽ mau nản, việc chơi lại
vòng vừa thua sẽ cần thiết thay vì chơi lại từ đầu, và nó là một tính năng được
đưa
vào trò chơi.
Một vấn đề khác nảy sinh, nếu lỡ Click hoặc ấn phím vô tình sai mong
muốn, người chơi không có quyền xóa bỏ màu đó đế chọn lại. Ban đầu, tính
năng
này được đưa vào, nhưng thấy không phù hợp nên nó bị gở bỏ; bởi vì nếu tại một
vị trí chọn đi chọn lại nhiều lần thì việc thắng cuộc khá dễ dàng, còn nếu chỉ cho
phép đặt lại màu một lần, thì cũng giảm bớt độ khó. Do đó tính năng này bị gỡ
Chương 2:
Hạn chế:
Khi sử dụng Demo hoặc khi chỉnh sửa chương trình, những hạn chế sau bộc lộ.
2.1 Đối vói người choi:

18


Niên luận 1

Trò chơi đoán màu

Giao diện không được đẹp lắm, con chuột rê trên nút là một thí dụ điển
hình, một ý tưởng khi rê chuột vào, nút màu sẽ bị chìm xuống, tuy nhiên vẫn
chưa
thế đưa vào chương trình, do khả năng bản thân còn hạn chế.
Lại thêm một khía cạnh rất quan trọng trong việc lập trình Game, bên cạnh đồ họa
bắt mắt, tính dễ chơi thì âm thanh giúp làm Game hấp dẫn hơn, tuy nhiên, cho tới
giờ phút này việc đưa âm thanh vào vẫn còn là một ý tưởng. Không hiểu vì sao
thủ

tục phát ra âm thanh trên Pascal không phát ra tác dụng, dù không phát hiện một
lỗi nào, và hiện giờ không phải với bản thân em, mà với nhiều người nó vẫn còn

một ẩn số.
Những lỗi lạ, thí dụ chạy chương trình trên máy ảo Virtual PC 2007 gọi
hàm trì hoãn Delay lại luôn theo mong muốn, trong khi trên máy thực lại thường
chạy nhanh hơn, việc làm dòng chữ chạy ngang nhanh hơn bình thường là thí dụ,
hay mỗi lần Click chuột vào một nút chữ Click sẽ hiện ra trên nút và mất đi,
nhưng lúc lại được, lúc lại không, trong khi trên máy ảo lại hoàn toàn theo ý
muốn.
2.2 Đối vói việc chỉnh sửa:
Tuy các thủ tục làm cho chương trình sáng sủa hơn, các chú thích hỗ trợ
tốt
cho việc lập trình hơn. Bên cạnh hiệu quả của lệnh nhảy không điều kiện Goto
trong Pascal lại phát sinh một vấn đề khác. Có thể nói lệnh nhảy Goto viết một
cách rất có hiệu quả các thay đối tuần tự, cụ thế ở đây là dùng trong tùy chọn của
người chơi thông qua các hộp tùy chọn, dùng lệnh này không cần vất vã như các
cấu trúc điều khiển được cung cấp sẳn có, có thể nói thấy như thế nào thì viết
như thế đó. Nhưng đó mới là vấn đề, việc lạm dụng lệnh nhảy goto làm chương
trình khó hiểu, rất khó trong việc chỉnh sửa chương trình, nhất là đổi với người
không phải chính là người viết nên chương trình.
2.3 Đối vói việc chọn ngôn ngữ cài đặt:
Thường một người tập viết Game thường bắt đầu bằng các ngôn ngũ' cơ
bản
nhất như c, Pascal do nó quen thuộc, và tài liệu tham khảo về nó khá nhiều. Tuy
nhiên,khi viết bằng các ngôn ngữ này sẽ khó hơn so với các ngôn ngữ mới phát
triển sau này, VB 2005 là thí dụ tiêu biểu. Ban đầu, việc chọn VB 2005 là lựa
chọn
đúng đắn, nhưng do yêu thích ngôn ngữ Pascal, gắn bó với ngôn ngữ này từ thời
phố thông, nên quyết định chọn ngôn ngữ này đế cài đặt, chấp nhận sự hạn chế.

Khó khăn lớn nhất là việc xây dựng giao diện. Việc định nghĩa các chương trình
con điều khiển chuột là quá khó, do đó trong trò chơi, chỉ dừng lại ở việc Click
chuột trái hoặc chuột phải, tuy nhiên chỉ cùng tác dụng là nhấp chọn mà thôi. Hơn
nữa theo xu thế hiện nay ít ai dùng tới Pascal trong việc lập trình Game. Có thế
nói
19


Trò chơi đoán màu

Niên luận 1

Chương 3: Hưóìig phát triển:
Từ nhũng phân tích ở trên, có hai đề xuất cho hướng phát triên như sau:
3.1 Hướng thứ nhất:
Dùng lại chương trình sẵn có, làm giao diện thân thiện hơn với người sử
dụng, có thế đưa thêm các tính năng như âm thanh,.. .và khắc phục tình trạng
nhiều lệnh nhảy, thay vào đó bằng các lệnh có cấu trúc để chương trình dế bảo trì,
sửa chữa hơn...
3.2 Hướng thứ hai:
Cài đặt lại bằng một ngôn ngữ mới phù hợp hơn cho việc lập trình Game, và
đưa các tính năng mới thích hợp như đã nêu trên vào chương trình và kế thừa
những tính năng cũ.
■=> Hưó'ng thứ nhất: tiết kiệm được nhiều thời gian, cũng như phù hợp đối
với
sự yêu thích ngôn ngũ’ Pascal. Tuy nhiên theo xu hướng phát triến của hệ
điều hành, MS.Dos không được hỗ trợ nữa và không thế chạy ứng dụng.
■=> Hướng thứ hai: thích hợp hơn đổi với lập trình Game, tuy nhiên phải
cài
đặt từ đầu.

Chương 4: Bài học kinh nghiệm:
Thứ nhất: thông gì khác trước nhất là lòng kiên trì, làm giao diện chuột
quá khó trên thư viện Dos; nhiều lúc định bỏ cuộc, cuối cùng mọi cố gắng cũng
không vô ích. Điều này khiến em tin các hạn chế của chương trình sẽ khắc phục
trong thời gian ngắn, cũng như là bài học về kiên nhẫn, nói xa hơn có thể áp dụng
khi gặp những khó khăn trong thực tế, như là việc xây dựng giải thuật giải quyết
vấn đề khó khăn.
Thứ hai: Giúp bản thân nắm vững hơn về ngôn ngữ Pascal, cũng như có
kinh nghiệm hơn trong việc lập trình cấu trúc, (các cấu trúc lệnh ngôn ngữ lập
trình chỉ khác nhau về hình thức, bản chất vẫn giống nhau), hay là cách định
nghĩa
chương trình con, các chú thích khi viết chương trình cũng là cần thiết.. .thuận lợi
cho việc viết chương trình.
Ngoài ra, việc trình bày niên luận cũng là một bày học tốt cho việc trình
bày báo cáo khoa học.
Phần 4:

_____ak___________________
PHÂN PHỤ LỤC
TÀI LIỆU THAM KHẢO

1. Trần Phưóc Nghĩa

Bài giảng Lập trình Pascal, ĐH. Bạc Liêu.
2. Bùi Việt Hà
Lập trình Pascal, Tập ba, NXB. Giáo dục.
20




×