1. Trang chủ
  2. » Công Nghệ Thông Tin

mô phỏng trò chơi caro bằng ngôn ngữ C

32 876 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mô Phỏng Trò Chơi Cờ Caro Bằng Ngôn Ngữ C
Tác giả Hoàng Tuấn An, Nguyễn Văn Hừng
Người hướng dẫn Nguyễn Thị Loan
Trường học Trường Đại học XYZ
Chuyên ngành Khoa học Máy tính
Thể loại Báo cáo thực tập cơ sở
Năm xuất bản 2012
Thành phố Thái Nguyên
Định dạng
Số trang 32
Dung lượng 502,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đây là phương pháp thực tếhóa kiến thức giúp cho chúng ta khi ra trường có thể vững vàng, tự tin hơn đểđáp ứng được yêu cầu cuả xã hội nói chung và của các công việc nói ri

Trang 1

Nhận xét của giáo viên hướng dẫn

Thái Nguyên, Ngày….Tháng….Năm 2012

Giáo viên hướng dẫn

Nguyễn Thị Loan

Trang 2

Lời Mở Đầu

Thực tiễn đã chứng minh rằng thực tập là một phần không thể thiếutrong hành trang tri thức của học sinh, sinh viên Đây là phương pháp thực tếhóa kiến thức giúp cho chúng ta khi ra trường có thể vững vàng, tự tin hơn đểđáp ứng được yêu cầu cuả xã hội nói chung và của các công việc nói riêng.Với sự tạo điều kiện của trường, khoa đã giúp chúng em được hiểu rõ hơn vềđiều đó bằng việc đi thực tập Trong khoảng thời gian thực tập, kiến thức cơbản giảng dạy của nhà trường đã được vận dụng vào công việc thực tập củachúng em Với sự giúp đỡ nhiệt tình của cô giáo hướng dẫn đã giúp chúng emhoàn thành bản báo cáo thực tập này

Trang 3

Lời Cảm Ơn

Để đề tài thực tập đạt kết quả tốt đẹp, trước hết chúng em xin gửi tớitoàn thể các thầy cô trong khoa Công nghệ thông tin – Trường Đại Học CôngNghệ Giao Thông Vận Tải Cơ Sở 3 lời chúc sức khỏe, lời chào trân trọng vàlời cảm ơn sâu sắc nhất

Với sự quan tâm, dạy dỗ và chỉ bảo tận tình chu đáo của giáo viênhướng dẫn đến nay nhóm chúng em đã có thể hoàn thành – đề tài thực tập

Để có được kết quả này nhóm chúng em xin đặc biệt gửi lời cảm ơn

chân thành tới cô giáo - Nguyễn Thị Loan - đã quan tâm giúp đỡ, giành thời

gian quý báu để hướng dẫn nhóm chúng em hoàn thành một cách tốt nhất đềtài thực tập trong thời gian qua

Với điều kiện thời gian có hạn cũng như kinh nghiệm còn hạn chế củamột sinh viên thực tập nên đề tài thực tập của nhóm chúng em không tránhkhỏi những thiếu xót Nhóm chúng em rất mong nhận được sự chỉ bảo, đónggóp ý kiến của quý thầy cô cùng toàn thể các bạn để nhóm chúng em có điềukiện bổ sung có thể hoàn thành đề tài thực tập hoàn chỉnh hơn

Một lần nữa nhóm chúng em xin chân thành cảm ơn !

Thái Nguyên, Ngày Tháng Năm 2012

Nhóm sinh viên thực tập

Hoàng Tuấn An

Nguyễn Văn Hùng

Trang 4

MỤC LỤC

CHƯƠNG 1:GIỚI THIỆU VỀ MỘT NGÔN NGỮ LẬP TRÌNH C

1.1 Lịch sử phát triển của ngôn ngữ lập trình C……….5

1.2 Đặc điểm của ngôn ngữ lập trình C……… 6

1.3 Một số ưu nhược điểm của ngôn ngữ C……… 6

1.3.1 Ưu điểm……….6

1.3.2 Nhược điểm……… 7

1.4 Khái quát về chế độ đồ họa trong C……….7

1.4.1 Chế độ đồ họa……… 7

1.4.2 Chương trình đồ họa……… 8

1.5 Thư viện và các hàm dùng cho chương trình………8

1.5.1 Thư viện dùng cho chương trình………8

1.5.2 Các hàm dùng cho chương trình………9

1.6 Ý tưởng của chương trình mô phỏng trò chơi caro bằng ngôn ngữ C…17 1.7 Cấu trúc tổng quát của chương trình……… 17

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH 2.1 Các bước xây dựng chương trình………19

2.2 Mã nguồn chương trình……… 24

2.3 Chạy chương trình……… 28

CHƯƠNG 3: KẾT LUẬN 3.1 Lời kết………… ……… 31

3.2 Tài liệu tham khảo… ………32

Trang 5

CHƯƠNG 1

GIỚI THIỆU VỀ MỘT NGÔN NGỮ LẬP TRÌNH C

1.1 Lịch sử phát triển của ngôn ngữ lập trình C

C là ngôn ngữ lập trình cấp cao,được sử dụng rất phổ biến để lập trình

hệ thống cùng với Assembler và phát triển các ứng dụng

Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỉ XX,

Dennish Ritchie(làm việc tại phòng thí nghiệm Bell) đã phát triển ngôn ngữ

lập trình C dựa trên ngôn ngữ BCPL (do Martin Richards đưa ra vào năm

1967) và ngôn ngữ B( do Ken Thompson phát triển từ ngôn ngữ BCPL vàonăm 1970 khi viết hệ điều hành UNIX đầu tiên trên máy PDP-7) và được càiđặt lần đầu tiên trên hệ điều hành UNIX của máy DEC PDP-11

Năm 1987 Dennish Richie và B.W Kernighan đã cho xuất bản quyển

“Ngôn Ngữ Lập Trình C” và được phổ biến rộng rãi đến nay.

Lúc ban đầu, C được thiết kế nhằm lập trình trong môi trường của hệ

điều hành UNIX nhằm mục đích hỗ trợ các công việc lập trình phức tạp.Nhưng về sau, với những công việc phát triển ngày càng tăng của công việc

lập trình, C đã vượt khuôn khổ của phòng thí nghiệm Bell và nhanh chóng hội

nhập vào thế giới lập trình để rồi vác công ty lập trình sử dụng một cách rộngrãi Sau đó các công ty sản xuất phần mềm lần lượt đưa ra các phiên bản hỗ

trợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng khai sinh từ

đó

Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và

rất “mềm dẻo”, có một thư viện gồm rất nhiều các hàm (function) đã được tạosẵn Người lập trình có thể tận dụng các hàm này để giải quyết bài toán mà

không cần phải tạo mới Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều phép toán

nên phù hợp cho việc giải quyết các bài toán kỹ thuật có nhiều công thức phức

tạp Ngoài ra, C cũng cho phép người lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tượng khác Tuy nhiên, điều mà ngừoi vừa mới học lập trình C thường gặp “rắc rối” là “hơi khó hiểu” do sự “mềm dẻo” của C Dù vậy, C

Trang 6

được phổ biến khá rộng rãi và đã trở thành một công cụ lập trình khá mạnh,được sử dụng như là một ngôn ngữ lập trình chủ yếu trong việc xây dựngnhững phần mềm hiện nay.

1.2 Đặc điểm của ngôn ngữ lập trình C

Ngôn ngữ lập trình C có những đặc điểm cơ bản sau:

 Tính cô đọng(compact): C chỉ có 32 từ khóa chuẩn và 40 toán tử chuẩn,

nhưng hầu hết đều được biểu diễn bằng chuỗi kí tự ngắn gọn

 Tính cấu trúc(structured): C có một tập hợp những chỉ thị của lập trình như cấu trúc lựa chọn, lặp Từ đó các chương trình viết bằng C được tổ chức

rõ ràng, dễ hiểu

 Tính tương thích(compatible): C có bộ tiền xử lý và một thư viện chuẩn

vô cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác các

chương trình viết bằng C vẫn hoàn toàn tương thích.

 Tính linh động(flexible): C là một ngôn ngữ rất uyển chuyển và cú pháp,

chấp nhận nhiều cách thể hiện, có thể thu gọn kích thước của các mã lệnh làmchương trình chạy nhanh hơn

 Biên dịch(compile): C cho phép biên dịch nhiều tập tin chương trình riêng

rẽ thành các tập tin đối tượng(obiect) và liên kết(link) các đối tượng đó lại vớinhau thành một chương trình có thể thực thi được(executable) thống nhất

1.3 Một số ưu nhược điểm của ngôn ngữ lập trình C

1.3.1 Ưu điểm

 Một ngôn ngữ cốt lõi đơn giản, với các chức năng quan trọng chẳng hạnnhư là những hàm hay việc xử lý tập tin sẽ được cung cấp bởi các bộ thư việncác thủ tục

 Tập trung trên mẫu hình lập trình thủ tục, với các phương tiện lập trìnhtheo kiểu cấu trúc

 Một hệ thống kiểu đơn giản nhằm loại bỏ nhiều phép toán không có ýnghĩa thực dụng

Trang 7

Dùng ngôn ngữ tiền xử lý, tức là các câu lệnh tiền xử lý C, cho các

nhiệm vụ như là định nghĩa các macro và hàm chứa nhiều tập tin mã nguồn(bằng cách dùng câu lệnh tiền xử lý dạng #include chẳng hạn)

 Mức thấp của ngôn ngữ cho phép dùng tới bộ nhớ máy tính qua việc sửdụng kiểu dữ liệu pointer

 Số lượng từ khóa rất nhỏ gọn

 Các tham số được đưa vào các hàm bằng giá trị, không bằng địa chỉ

 Hàm các con trỏ cho phép hình thành một nền tảng ban đầu cho tínhđóng và tính đa hình

 Hỗ trợ các bản ghi hay các kiểu dữ liệu kết hợp do người dùng từ khóađịnh nghĩa struct cho phép các dữ liệu liên hệ nhau có thể được tập hợp lại vàđược điều chỉnh như là toàn bộ

Chạy nhanh và có thể chạy trên mọi máy, các hàm trong C có thể được viết và lưu vào thư viện và được triệu gọi khi yêu cầu cấu trúc C khá tường

minh và mạch lạc

1.3.2 Nhược điểm

Ngôn ngữ C khó và khô khan

Khi chạy các chương trình lớn thuật toán của C khá phức tạp vì vậy

chúng chỉ thích hợp với chương trình hệ thống hoặc những chương trình đòihỏi tốc độ

1.4 Khái quát về chế độ đồ họa trong C

1.4.1 Chế độ đồ họa

Màn hình đồ họa gồm nhiều điểm ảnh được sắp xếp trên các đườngthẳng ngang và dọc Điều này đúng cho tất cả các kiểu màn hình đồ họa củamáy tính Khác biệt chủ yếu giữa chúng là kích thước và số các điểm ảnh.Trong CGA ( độ phân giải thấp), điểm ảnh có kích thước lớn, chiều ngang có

320 điểm ảnh, còn theo chiều dọc có 200 điểm ảnh Màn hình VGA có độ

Trang 8

phân giải cao hơn điểm ảnh và trên mỗi cột có 480 điểm ảnh Điểm ảnh càng nhỏ thì số điểm ảnh trên màn hình càng nhiều và chất lượng đồ họa càng cao

Mỗi kiểu đồ họa dùng một hệ tọa độ riêng Hệ tọa độ cho màn hình VGA là 640 x 480 như sau:

Nhờ hệ tọa độ này ta có thể tham chiếu đến bất kỳ điểm ảnh nào trên màn hình đồ họa

1.4.2 Chương trình đồ họa

Một chương trình đồ họa thường gồm các phần sau:

 Khởi tạo chế độ đồ họa

 Xác định màu nền (màu màn hình) màu đường vẽ, màu tô và kiểu (mẫu) tô

 Vẽ tô màu các hình mà ta mong muốn

 Các thao tác đồ họa khác như cho hiện các dòng chữ…

 Đóng hệ thống đồ họa trở về mode văn bản

1.5 Thư viện và các hàm dùng cho chương trình

1.5.1 Thư viện dùng cho chương trình

 #include<stdio.h>  thư viện vào,ra chuẩn nhập xuất dữ liệu

 #include<dos.h>  thư viện chứa nhận chứa hàm mouse.inc

 #include<conio.h>  thư viện dừng màn hình xem kết quả

 #include<graphics.h> thư viện đồ họa

 #include “mouse.inc”khai báo hàm tự tạo để thiết kế menu

Trang 9

 #define MAX 25  khai báo hàm MAX có giá trị là 25

 #define HEIGHT 16  khai báo hàm HEIGHT có giá trị là 16

1.5.2 Hàm dùng cho chương trình

 void line(int x1,int y1,int x2,int y2);  vẽ đường thẳng nối 2

điểm(x1,y1) &(x2,y2) nhưng không làm thay đổi vị trí con trỏ

 void rectangle(int x1,int y1,int x2,int y2);  vẽ một đường hình chữ

nhật song song với cạnh màn hình Tọa độ đỉnh trên bên trái của hìnhchữ nhật là(x1,y1) và điểm dưới bên phải là(x2,y2)

 void bar(int x1,int y1,int x2,int y2);  vẽ và tô màu một hình chữ

nhật.Tọa độ đỉnh trên bên trái của hình chữ nhật là(x1,y1) và điểm dướibên phải là (x2,y2)

 void bar3d(int x1, int x2, int y2, int depth,int top);sẽ vẽ một khối hộp

chữ nhật, mặt ngoài của nó là hình chữ nhật xác định bởi các toạ độ (x1,y1),(x2,y2) Hình chữ nhật này được tô màu thông qua hàm setfillstyle Tham sốdepth xác định số điểm ảnh trên bề sâu của khối 3 chiều Tham số top có thểnhận các giá trị 1 hay 0 và khối 3 chiều tương ứng sẽ có nắp hoặc không

 void setcolor(int color); chọn màu đường vẽ

 void setfillstyle(int pattern,int color);  chọn mẫu tô(kiểu) và mầu tô.

 Bảng màu:

Tên hằng Giá trị số Mầu hiển thị

Trang 10

DARKGRAY 8 Xám sẫm

 Các giá trị của pattern:

Tên hằng Giá trị số Mô tả kiểu tô

XHATCH_FILL 8 Tô bằng đường gạch bóng chữ thậpINTERLEAVE_FILL 9 Tô bằng đường đứt quãng

 setviewport(xc, yc, getmaxx(), getmaxy(), 0); kẻ hệ trục tọa độ.

+xc = getmaxx()/2; phần tử trái trên x âm, y âm.

+yc = getmaxy()/2;  phần tử trái dưới x âm, y âm.

+ getmaxx();  phần tử phải trên x dương, y âm.

+ getmaxy();  phần tử phải dưới x dương,y dương.

 void outtextxy(int x,int y, char*s);  cho hiện chuỗi kí tự tại vị trí

(x,y)

Trang 11

 Câu lệnh lựa chọn:

Cấu trúc:

switch(biểu thức)

case <hằng 1>:<lệnh 1>;[break];

case <hằng 2>:<lệnh 2>;[break];

………

case<hằng n>:<lệnh n>;[break];

 Vòng lặp có số lần xác định:

Cấu trúc:

for(biểu thức 1;biểu thức 2;biểu thức 3)

Lệnh;

 Trong đó:

biểu thức 1:để gán giá trị khởi tạo cho biến điều khiển.

biểu thức 2:là biểu thức điều khiển.

biểu thức 3: là giá trị thay đổi của biến điều khiển.

 Hoạt động của toán tử for

Toán tử for hoạt động theo các bước sau :

+ Xác định biểu thức 1.

+ Xác định biểu thức 2.

 Tuỳ thuộc vào tính đúng sai của biểu thức 2 để máy lựa chọn một

trong hai nhánh :

+ Nếu biểu thức hai có giá trị 0 ( sai ), máy sẽ ra khỏi for và chuyển tới câu

lệnh sau thân for.

+ Nếu biểu thức hai có giá trị khác 0 ( đúng ), máy sẽ thực hiện các câu lệnh

trong thân for.

+ Tính biểu thức 3, sau đó quay lại bước 2 để bắt đầu một vòng mới của chu trình.

Trang 12

 Chú ý

+ Nếu biểu thức 2 vắng mặt thì nó luôn được xem là đúng Trong trường hợp

này việc ra khỏi chu trình for cần phải được thực hiện nhờ các lệnh break, goto hoặc return viết trong thân chu trình.

+ Trong dấu ngoặc tròn sau từ khoá for gồm ba biểu thức phân cách nhau

bởi dấu ; Trong mỗi biểu thức không những có thể viết một biểu thức mà có quyền viết một dãy biểu thức phân cách nhau bởi dấu phảy Khi đó các biểu thức trong mỗi phần được xác định từ trái sang phải Tính đúng sai của dãy biểu thức được tính là tính đúng sai của biểu thức cuối cùng trong dãy này.

+ Trong thân của for ta có thể dùng thêm các toán tử for khác, vì thế ta có thể xây dựng các toán tử for lồng nhau.

+ Khi gặp câu lệnh break trong thân for, máy ra sẽ ra khỏi toán tử for sâu nhất chứa câu lệnh này Trong thân for cũng có thể sử dụng toán tử goto để

nhảy đến một ví trí mong muốn bất kỳ.

 Vòng lặp có số lần không xác định:

A, dùng lệnh while

 Cấu trúc lặp với toán tử while

Toán tử while dùng để xây dựng chu trình lặp dạng :

while ( biểu thức )

Lệnh hoặc khối lệnh;

 Như vậy toán tử while gồm một biểu thức và thân chu trình Thân

chu trình có thể là một lệnh hoặc một khối lệnh.

 Hoạt động của chu trình như sau :

Máy xác định giá trị của biểu thức, tuỳ thuộc giá trị của nó máy sẽ chọn cách thực hiện như sau :

+ Nếu biểu thức có giá trị 0 ( biểu thức sai ), máy sẽ ra khỏi chu trình và chuyển tới thực hiện câu lệnh tiếp sau chu trình trong chương trình.

+ Nếu biểu thức có giá trị khác không ( biểu thức đúng ), máy sẽ thực hiện

lệnh hoặc khối lệnh trong thân của while Khi máy thực hiện xong khối lệnh

Trang 13

này nó lại thực hiện xác định lại giá trị biểu thức rồi làm tiếp các bước như trên.

 Chú ý :

+ Trong các dấu ngoặc ( ) sau while chẳng những có thể đặt một biểu thức

mà còn có thể đặt một dãy biểu thức phân cách nhau bởi dấu phảy Tính đúng sai của dãy biểu thức được hiểu là tính đúng sai của biểu thức cuối cùng trong dãy.

+ Bên trong thân của một toán tử while lại có thể sử dụng các toán tử while khác bằng cách đó ta đi xây dựng được các chu trình lồng nhau.

+ Khi gặp câu lệnh break trong thân while, máy sẽ ra khỏi toán tử while sâu

nhất chứa câu lệnh này.

+ Trong thân while có thể sử dụng toán tử goto để nhảy ra khỏi chu trình đến một vị trí mong muốn bất kỳ Ta cũng có thể sử dụng toán tử return trong thân while để ra khỏi một hàm nào đó.

B, dùng lệnh do-while

 Chu trình do while có dạng sau :

do

Lệnh hoặc khối lệnh;

while ( biểu thức );

 Lệnh hoặc khối lệnh là thân của chu trình có thể là một lệnh riêng lẻ

hoặc là một khối lệnh.

 Hoạt động của chu trình như sau :

+ Máy thực hiện các lệnh trong thân chu trình.

+ Khi thực hiện xong tất cả các lệnh trong thân của chu trình, máy sẽ xác định giá trị của biểu thức sau từ khoá while rồi quyết định thực hiện như sau: + Nếu biểu thức đúng ( khác 0 ) máy sẽ thực hiện lặp lại khối lệnh của chu trình lần thứ hai rồi thực hiện kiểm tra lại biểu thức như trên.

Trang 14

+ Nếu biểu thức sai ( bằng 0 ) máy sẽ kết thúc chu trình và chuyển tới thực hiện lệnh đứng sau toán tử while.

 Cấu trúc có điều kiện

Lệnh if-else

 Toán tử if cho phép lựa chọn chạy theo một trong hai nhánh tuỳ

thuộc vào sự bằng không và khác không của biểu thức Nó có hai cách viết sau :

if ( biểu thức )

khối lệnh 1;

/* Dạng một */

if ( biểu thức ) khối lệnh 1;

else khối lệnh 2 ;

/* Dạng hai */

 Hoạt động của biểu thức dạng 1 :

+ Máy tính giá trị của biểu thức Nếu biểu thức đúng ( biểu thức có giá trị khác 0 ) máy sẽ thực hiện khối lệnh 1 và sau đó sẽ thực hiện các lệnh tiếp sau lệnh if trong chương trình Nếu biểu thức sai ( biểu thức có giá trị bằng 0 ) thì máy bỏ qua khối lệnh 1 mà thực hiện ngay các lệnh tiếp sau lệnh if trong chương trình.

 Hoạt động của biểu thức dạng 2 :

+ Máy tính giá trị của biểu thức Nếu biểu thức đúng ( biểu thức có giá trị khác 0 ) máy sẽ thực hiện khối lệnh 1 và sau đó sẽ thực hiện các lệnh tiếp sau khối lệnh 2 trong chương trình.

+ Nếu biểu thức sai ( biểu thức có giá trị bằng 0 ) thì máy bỏ qua khối lệnh 1 mà thực hiện khối lệnh 2 sau đó thực hiện tiếp các lệnh tiếp sau khối lệnh 2 trong chương trình.

 Sử dụng return ở cuối hàm int main().

Trang 15

 return là câu lệnh trả về 1 giá trị cho một hàm có kiểu trả về.

 Thân hàm có thể sử dụng một câu lệnh return, có thể dùng nhiều

câu lệnh return ở các chỗ khác nhau, và cũng có thể không sử dụng câu lệnh

này.

 Dạng tổng quát của nó là :

return [biểu thức];

+ Giá trị của biểu thức trong câu lệnh return sẽ được gán cho hàm.

 Mảng nhiều chiều:

 <Kiểu dữ liệu> cách <tên mảng> [chỉ số 1][chỉ số 2];

 Ma trận:

+ Đường chéo chính ( i=j).

+ Đường chéo phụ (i+j=n+1).

 Một giá trị kiểu char chiếm 1 byte ( 8 bit ) và biểu diễn được một ký

tự thông qua bảng mã ASCII Ví dụ :

A11 A12 A13A21 A22 A23A31 A32 A33

Trang 16

Có hai kiểu dữ liệu char : kiểu signed char và unsigned char

 Phân loại ký tự :

Có thể chia 256 ký tự làm ba nhóm :

+ Nhóm 1: Nhóm các ký tự điều khiển có mã từ 0 đến 31 Chẳng hạn ký tự

mã 13 dùng để chuyển con trỏ về đầu dòng, ký tự 10 chuyển con trỏ xuống dòng dưới ( trên cùng một cột ) Các ký tự nhóm này nói chung không hiển thị

 Trong C cho phép sử dụng số nguyên kiểu int, số nguyên dài kiểu

long và số nguyên không dấu kiểu unsigned Kích cỡ và phạm vi biểu diễn của chúng được chỉ ra trong bảng dưới đây :

Int Từ -32768 đến 32767 2 byte

Long Từ -2147483648 đến 2147483647 4 byte

Ngày đăng: 18/04/2014, 10:38

TỪ KHÓA LIÊN QUAN

w