Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
85,5 KB
Nội dung
TRÒ CHƠI CỜ CARO GIỮA 2 NGƯỜI TRÊN MÁY
TÍNH
LỜI NÓI ĐÀU
Ngôn ngữ lập trình c là một ngôn ngữ mạnh, được các nhà tin học chuyên nghiệp cũng
như các nhà lập trình nghiệp dư sử dụng để lập trình hệ thống, lập trình ứng dụng.. ử Vĩ vậy nhu
cầu học c là một nhu cầu tất yếu, nhất là các kỹ sư, các sinh viên của nhiều chuyên ngành khoa
học và kỹ thuật khác nhau.
Để giúp sinh viên hiểu rõ về ngôn ngữ này và nâng cao thêm kỹ năng lập trình của mình, Khoa
Công Nghệ Tin Học của Viện Đại Học Mở Hà Nội đã đưa ra các đề tài và giao cho sinh viên
thực hiện trong kỳ thi tốt nhiệp. Em là Nguyễn Quang Hưng được giao thực hiện đề tài chơi cờ
caro giữa 2 người với nhau ừên máy tính.
Chương trình chơi cờ caro trên máy tính là một trong những đề tài rất khó đối với một sinh viên
mới bước vào lập trình như em. Song với nỗ lực của bản thân cũng như sự hướng dẫn nhiệt tình
của GS.TS. Phạm Văn Ất, em đã hoàn thành chương trình này sau một tháng. Chương trình sau
khi hoàn thành có những chức năng cơ bản sau:
Cho phép nhập tên người chơi.
Cho phép người chơi dùng bàn phím để di chuyển con trỏ và đánh quân cờ của mình ở
vị trí mong muốn.
Cho phép người chơi hoãn một nước sau mỗi lần đánh.
Trong lúc chơi, cho phép hủy bỏ ván đang chơi để chơi lại từ đầu hoặc thoát ra ngoài.
- Báo hiệu chién thẳng và nâng tỷ số cho người thắng sau mỗi ván chơi.
Do trình độ và thời gian hạn ché nên chương trình chưa được hoàn hảo. Em rất mong nhận
được những ý kiến đóng góp của các thầy cô và các bạn.Em xin chân thành cảm ơn!
PHẦN II:
GIỚI THIỆU CHƯƠNG TRÌNH •
Nội dung chương trình: Xây dựng chương trinh chơi cờ caro (để 2 người chơi với nhau) gồm
các nội dung sau:
1.
Vẽ bàn cờ.
2.
Hiển thj 2 ký hiệu (ví dụ o và X) để người đi trước chọn. Nhập họ tên của từng
người chơi.
3.
Cho phép người chơi dùng các phím mũi tên hoặc dùng chuột để di chuyển con
trỏ đến các ô trên bàn cờ.
4.
Cho phép dùng phím Enter để chọn ô rỗng đang chứa con trỏ. Đánh dấu được
chọn bằng 1 trong 2 ký tự chon trong mục 2.
5.
Cho phép hoãn sau một nước.
6.
Sau mỗi nước chương trình kiểm tra xem đã ai thắng cuộc hay chưa. Nếu có
người thắng, chương trình thông báo họ tên người thắng và kết thúc một ván, trái lại trò
chơi được tiếp tục.
7.
Sau khi két thúc một ván, chương trình sẽ cho người chơi tiép hay két thúc, tùy
theo sự lựa chọn của người chơi.
8.
Khi đang chơi, người chơi có thể két thúc chương trình bằng cách bấm một
phím đặc biệt nào đó (ví dụ CTRL Q)
Ngôn ngữ thực hiện: turbo c
THIẾT KẾ CHƯƠNG TRÌNH
Sau khi nghiên kỹ đề tài, chứng em đã vạch ra được một phương hướng thiết kế chương
trình như sau:
1.
Vẽ bàn cờ 12x12 ô vuông (số ô vuông có thể thay đổi đựoc theo mã nguồn) trên
nền của cửa sổ.
2.
Chương trình được tổ chức thành các module có các hàm liên quan:
+ Khai báo các mảng 1 chiều htl[], ht2[] để lưu tên người chơi, mảng 2 chiều a[][] để lưu
vị trí các ô trong bàn cờ.Tọa độ này thay đổi theo khi ta di chuyển các phím mũi tên trên
bàn phím.
+ Các thuộc tính xcu,ycu dùng để xóa quân cờ vừa đánh mỗi khi có 1 người xin hoãn
2
PHẦN II:
lượt đi vừa xong.
+ Các hàm thành viên
+ Hàm ve() và an() dùng để vẽ và ẩn điểm trong quá trình điểm chuyển động.
+ Hàm xanh() và trangO để vẽ và xử lý quân cờ xanh và quân cờ trắng mỗi khi gọi đén.
Lời gọi đén các hàm này được mặc định bởi phím Enter. Phím này được cài đặt trong
hàm dcd().
+ Hàm dcd() (điểm chuyển động) dùng để di chuyển điểm trỏ trên bàn cờ và đánh quân
cờ mỗi khi phím Enter được gõ. Ngoài ra hàm này còn có các chức năng hoãn một nước
sau khi đánh, thoát và giới hạn phạm vi di chuyển của điểm trỏ.
+ Hàm taomang_kiemtra() dùng để kiểm tra xem sau mỗi lượt đánh đã có 5 ô liền nhau
cùng màu theo các chiều trên bàn cờ không.
+ Hàm choilaiO hàm này gàn giống với hàm main(), nó chỉ khác ở chỗ bỏ qua thủ tục
nhập tên hai người chơi mỗi khi két thúc một ván và chơi lại từ đầu. Hàm này còn đóng
vai trò thaỵ đổi tỷ số sau khi két thúc ván cờ vừa chơi.
+ Hàm ktdh() để khởi tạo màn hình đồ họa
+ Hàm main() là chương trình chính dùng để tên 2 người chơi, vẽ bàn cờ, khởi tạo con
ừỏ và gọi đến các hàm
3.
Các vấn đề đáng chú ý trong chương trình là khả năng nhận biét 1 ô đã có quân
cờ được đánh, cho phép hoãn 1 nước và cách xác đinh chiến thắng cũng như hiện tỷ số
sau mỗi ván
PHẦN III: CÀI ĐẶT VÀ HƯỚNG DẪN sử DỤNG CHƯƠNG
TRÌNH
+ Chạy file cocaro.exe.
+ Sau khi chạy file cocaro.exe chương trình sẽ hiện cho người chơi giao diện để nhập tên người
chơi. Người chơi nhập nhập tên rồi nhấn Enter để bắt đầu chơi.
+ Giao diện dành cho 2 người chơi gồm 1 bàn cờ 12x12 ô vuông.
+ Luật chơi là mỗi người người sử dụng 1 quân cờ (O hoặc X), lần lượt mỗi người đánh mỗi lần
đánh 1 quân. Người thắng cuộc là người có 5 quân cờ liền nhau theo các chiều trên bàn cờ.
+ Tên người thắng và tỉ số giữa 2 người chơi sẽ được hiện ra.
+ Trong khi chơi ngừơi chơi có thể thoát ra ngoài bằng phím ESC.
3
PHẦN II:
Các hàm và thủ tục sử dụng trong chương trình:
void ve(int m);
void an () ;
void xanh();
void trang 0;
void dcd(int tc);
void taomang_kiemtra();
void choilai(char htl[],char ht2[]);
void ktdh();
void main();
Dưới dây là mã nguồn chinh của chương trình.
/*Chuong trinh choi co ca ro giua 2 nguoi voi nhau tren may tinh.*/
#include
#include
#include
#include
#include
#include
#include int
nguoil=0,nguoi2=0; char
htl[30],ht2[30]; int a [12]
[12];
//mang luu vi tri cac o trong ban co
int X, y, m, xcu, ycu;
int trangdi,xanhdi;
int kiemtra ;
int n;
int dx,dy,odadanh=0; char
traloi; char ss [30],*s ;
//khai bao toa do ban dau
int i,to=30;
int xÓ=100,xũl=100,yũ=50,yũl=50,xl=460, yl=410;
void ve(int m);
void an();
4
PHẦN II:
void xanh();
void trang 0;
void dcd(int tc);
void taomang_kiemtra();
void choilai(char htl[],char ht2[]);
/***********XAY DUNG CAC HAM VA PHUONG THUC**************************/
void ve(int m)
{
setcolor(m); putpixel(x,y,m);
}
void an()
{
putpixel(x,y,getbkcolor() ) ;
}
//Ve va xu ly quan co xanh void
xanh()
{
if((getpixel(x+7,y+7)==1) I I (getpixel(x+7,y+7)==15))
{
}
{
{
odadanh=l;
else
odadanh=0;
setcolor(1);
circle(x,y,7);
xcu=x;ycu=y;
//bao
hieu
taomang_kiemtra();
if(kiemtra==l)
thang
setcolor(11),settextstyle(3,0,4); s=" thang!Xin chuc
mung."; strcpy(ss,ht2); strcat (ss,s);
outtextxy(100,410,ss);
5
PHẦN II:
sound(50
0);delay(500);nosound();delay(10);
sound(550);delay(500);nosound();delay(10);
sound(60
0);delay(500);nosound();delay(10);
nguoi2++;
setcolor (9),settextstyle (1,0,1);
outtextxy(100, 450,"Choi tiep? (C=co/Esc=thoat)");
traloi=getch();
if(traloi=='c')
{
}
else
}
}
choilai (htl,ht2);
exit(0);
if(odadanh==0)
{ trangdi=l;
xanhdi=0;
}
}
//ve va xu ly quan CO trang void
trangO
//ve anh tai vi tri diem tro
if((getpixel(x+7,y+7)==15) I I (getpixel(x+7,y+7)==1))
{ I I putchar(7); odadanh=l;
else
}
{
odadanh=0; setcolor
(15); line(x-7,y7,x+7,y+7);
line(x+7,y-7,x-7,y+7);
xcu=x;ycu=y;
taomang_kiemtra(); if (kiemtra==2)
{
setcolor(11),settextstyle(3,0,4); s=" thang!xin chuc
mung."; strcpy(ss,htl); strcat (ss,s);
6
PHẦN II:
outtextxy(100,410,ss);
sound(50 0);delay(500);nosound();delay(10);
sound(550);delay(500);nosound();delay(10); sound(60
0);delay(500);nosound();delay(10); nguoil++;
setcolor(9),settextstyle(1,0,1);
outtextxy(100, 450,"Choi tiep? (C=co/Esc=thoat)");
traloi=getch ();
if (traloi=='c')
{
setcolor(1);setfillstyle(1,1);bar(99,410,600,480);
choilai (htl,ht2);
else
}
}
}
exit(0);
if(odadanh==0)
{ trangdi=0; xanhdi=l;
}
ỵi í i íi í i í i í i í i í i íi í i í i í i í i í i íi í i í i í i í i í i íi í i í i í i í i í i íi í i í i í i í i í i íi í i í i r ir i r i ri r i r ir i r ir i r i r ir i r ir i r i ri r i r ir i r ir i r i r ir i r ir i r i ri r i r ir i r ir i r i r ir i r ir i r i r
*/
void dcd(int tc)
{
int i,j ; int dx,dy; char ch;
trangdi=xanhdi=l; while(1)
{
dx=0;dy=0; ve (14) ;
ch=getch(); if(ch==27)
exit(0); if(ch==80)
dy=l; if(ch==72) dy=l; if(ch==77) dx=l;
if(ch==75) dx=-l;
if ( (ch==13)&&(trangdi==l)) {trang();}
if((ch==13)&&(xanhdi==l)) { xanh();}
//hoan mot nuoc if (toupper(ch)=='B')
{
7
PHẦN II:
setcolor(6);setfillstyle(1,6);pieslice(xcu,ycu,0,360,10);
if(trangdi==0)
{
}
trangdi=l;xanhdi=0;
else
{
}
}
xanhdi=l;trangdi=0;
if (toupper(ch)=='c')
{
}
choilai(htl,ht2);
an () ; ve (6); x+=tc*dx; y+=tc*dy;
//con tro khong ra khoi ban CO
if (x>460) x=445;
if(y410)
}
}
y=395;
if (x[...]... outtextxy(1,220, "C= Replay"); setcolor (5); line (1,300,90,300); //Khai bao va tao cuoc choi } dcd(30); closegraph (); KẾT LUẬN Đây là chương trình đư c em th c hiện sau 1 tháng, chương trình đã đáp ứng đư c c c ch c năng c bản c a 1 chương trình chơi c caro giữa 2 người trên máy tính điện tử.Tuy nhiên đây chỉ là 1 chương trình mô phỏng nên giao diện và một số ch c năng c n chưa hoàn thiện .C ch x c định chiến... c n chưa tối ưu Trong chương trình c sử dụng đến c c hàm sound() và nosoud() đó là c c hàm âm thanh và ngắt âm để báo hiệu chiến thắng mỗi khi c 1 bên đánh đủ 5 quân c ng màu thẳng hàng .C c 11 PHẦN II: hàm này nằm trong thư viện DOS.H Chương trình c hơi dài do sử dụng đến c c hàm đồ họa giống nhau để trang chí bàn c cho đẹp.Phương hướng c a sắp tới c a em là tối ưu hóa chương trình, phát triển chương... chương trình, phát triển chương trình hoàn hảo hơn và c giao diện đẹp hơn nhằm đáp ứng đư c yêu c u c a 1 trò chơi giải trí c a giới trẻ sau những giờ h c căng thẳng Chương trình đư c hoàn thành với sự giúp đỡ nhiệt tình c a GS.TS.Phạm Văn Ất C ng nhân dịp này em xin c m an tới thầy hướng dẫn c a mình và c c bạn đã giúp đỡ em hoàn thành chương trình MUC LUC • • TRÒ CHƠI C CARO GIỮA 2 NGƯỜI TRÊN MÁY TÍNH... outtextxy(500,190, "C" ); outtextxy(5 0 0,2 2 0,"A"); outtextxy(500,2 60,"R"); outtextxy(500,2 90,"0"); setcolor(12),settextstyle(4,0,6); outtextxy(500,340,"5"); setcolor(11); //Ke 12x12 o vuong for (i=0;i ... quân c đánh, cho phép hoãn nư c cách x c đinh chiến thắng tỷ số sau ván PHẦN III: C I ĐẶT VÀ HƯỚNG DẪN sử DỤNG CHƯƠNG TRÌNH + Chạy file cocaro.exe + Sau chạy file cocaro.exe chương trình cho... dcd(30); closegraph (); KẾT LUẬN Đây chương trình em th c sau tháng, chương trình đáp ứng ch c chương trình chơi c caro người máy tính điện tử.Tuy nhiên chương trình mô nên giao diện số ch c chưa... th c, tùy theo lựa chọn người chơi Khi chơi, người chơi két th c chương trình c ch bấm phím đ c biệt (ví dụ CTRL Q) Ngôn ngữ th c hiện: turbo c THIẾT KẾ CHƯƠNG TRÌNH Sau nghiên kỹ đề tài, chứng