sách gpt4 ăn đã đi

Một lập trình viên già dạy bạn cách hoàn thành trò chơi Tetris C++ trong một ngày

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 32 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết blog CFSDN này, một lập trình viên kỳ cựu hướng dẫn bạn cách hoàn thành trò chơi Tetris C++ trong một ngày, được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Đầu tiên, hãy xem các kết xuất:

  。

 
Một lập trình viên già dạy bạn cách hoàn thành trò chơi Tetris C++ trong một ngày

  。

  。

Hình 1 Quá trình chạy game

  。

Quá trình sản xuất được giải thích chi tiết dưới đây.

  。

1. Tài liệu chính

Các tệp này chứa ba: tetris.cpp, tetris.h và main.cpp. Công dụng của mỗi tệp như sau:

tập tin tetris.cpp: thực hiện chức năng;

tetris.h: khai báo lớp và hàm;

main.cpp: hàm chính;

  。

2. Thiết kế giao diện

bool vis[100][100]; // Dùng để đánh dấu tọa độ int Co[100][100];

TRONG:

vis[100][100] dùng để đánh dấu tọa độ giao diện, true nghĩa là có nội dung, false nghĩa là trống;

Co[100][100] là màu dùng để đánh dấu tọa độ giao diện;

Thiết lập chức năng khung như sau:

//Đặt khung void setFrame(){ color(5); getCoord(30,1); cout<<" "<<>

Thiết lập giao diện tổng thể như hình dưới:

  。

 
Một lập trình viên già dạy bạn cách hoàn thành trò chơi Tetris C++ trong một ngày

  。

  。

Hình 2 Sơ đồ giao diện

  。

  。

3. Thiết kế khối

Lớp đại diện cho khối như sau:

class T_Box{ static int Score; static int Xếp hạng; riêng tư: int x,y; // Kiểu int; // Kiểu int fg; // Đồ họa đã thay đổi của một đồ họa nhất định: T_Box(int ​​​​sx = 31 ,int sy = 3 ,int st = 0 ,int f = 0); static void staticNum(int num void setValue(int sx = 31 ,int sy = 3, int st = 0, int f = 0); void Move(int stepA, int stepB); bool Stop(); void printBox(); void erasBox(); (T_Box tạm thời); void Transform(); bool Judge();};

Chức năng thiết kế của các khối khác nhau như sau:

lớp Coord{ public : int x; int y; int Col;}G[10][10][10];

TRONG:

x, y là tọa độ tương đối;

Col là màu khối;

G[10] [10] [10]: Một chiều đại diện cho loại khối, hai chiều đại diện cho các ô vuông bên trong khối và ba chiều đại diện cho dạng biểu diễn của khối;

Chúng ta hãy nhìn vào thiết kế của từng khối, như hình dưới đây:

// Định nghĩa phần tử void setBox(){ // 1 phần tử for(int i = 0 ;i < 4 ; ++i) { G[0][0][i].x = 0 ; G[0][0][i].y = 0 ; G[0][0][i].Col = 14 ; G[0][1][i].x = 0 ; G[0][1][i].y = 1 ; G[0][1][i].Col = 14 ; G[0][2][i].x = 2 ; G[0][2][i].y = 0 ; G[0][2][i].Col = 14 ; G[0][3][i].x = 2 ; G[0][3][i].y = 1 ; G[0][3][i].Col = 14 ; } // 2 Biểu thức G[1][0][0].x = 0 ; G[1][0][0].y = 0 ; G[1][0][0].Col = 3 ; G[1][1][0].x = 0 ; G[1][1][0].y = 1 ; G[1][1][0].Col = 3 ; G[1][2][0].x = 0 ; G[1][2][0].y = 2 ; G[1][2][0].Col = 3 ; G[1][3][0].x = 0 ; G[1][3][0].y = 3 ; G[1][3][0].Col = 3 ; G[1][0][1].x = 0 ; G[1][0][1].y = 0 ; G[1][0][1].Col = 3 ; G[1][1][1].x = 2 ; G[1][1][1].y = 0 ; G[1][1][1].Col = 3 ; G[1][2][1].x = 4 ; G[1][2][1].y = 0 ; G[1][2][1].Col = 3 ; G[1][3][1].x = 6 ; G[1][3][1].y = 0 ; G[1][3][1].Col = 3 ; G[1][0][2].x = 0 ; G[1][0][2].y = 0 ; G[1][0][2].Col = 3 ; G[1][1][2].x = 0 ; G[1][1][2].y = 0 ; G[1][1][2].Col = 3 ; G[1][1][2].y = 1 ; G[1][1][2].Col = 3 ; G[1][2][2].x = 0 ; G[1][2][2].y = 2 ; G[1][2][2].Col = 3 ; G[1][3][2].x = 0 ; G[1][3][2].y = 3 ; G[1][3][2].Col = 3 ; G[1][0][3].x = 0 ; G[1][0][3].y = 0 ; G[1][0][3].Col = 3 ; G[1][1][3].x = 2 ; G[1][1][3].y = 0 ; G[1][1][3].Col = 3 ; G[1][2][3].x = 4 ; G[1][2][3].y = 0 ; G[1][2][3].Col = 3 ; G[1][3][3].x = 6 ; G[1][3][3].y = 0 ; G[1][3][3].Col = 3 ; // 3 G[2][0][0].x = 0 ; G[2][0][0].y = 0 ; G[2][0][0].Col = 4 ; G[2][1][0].x = 0 ; G[2][1][0].y = 1 ; G[2][1][0].Col = 4 ; G[2][2][0].x = 2 ; G[2][2][0].y = 1 ; G[2][2][0].Col = 4 ; G[2][3][0].x = 2 ; G[2][3][0].y = 2 ; G[2][3][0].Col = 4 ; G[2][0][1].x = 0 ; G[2][0][1].y = 0 ; G[2][0][1].Col = 4 ; G[2][1][1].x = 2 ; G[2][1][1].y = 0 ; G[2][1][1].Col = 4 ; G[2][2][1].x = 0 ; G[2][2][1].y = 1 ; G[2][2][1].Col = 4 ; G[2][3][1].x = -2 ; G[2][3][1].y = 1 ; G[2][3][1].Col = 4 ; G[2][0][2].x = 0 ; G[2][0][2].y = 0 ; G[2][0][2].Col = 4 ; G[2][1][2].x = 0 ; G[2][1][2].y = 1 ; G[2][1][2].Col = 4 ; G[2][2][2].x = 2 ; G[2][2][2].y = 1 ; G[2][2][2].Col = 4 ; G[2][2][2].x = 2 ; G[2][2][2].y = 2 ; G[2][3][2].Col = 4 ; G[2][0][3].x = 0 ; G[2][0][3].y = 0 ; G[2][0][3].Col = 4 ; G[2][1][3].x = 2 ; G[2][1][3].y = 0 ; G[2][1][3].Col = 4 ; G[2][2][3].x = 0 ; G[2][2][3].y = 1 ; G[2][2][3].Col = 4 ; G[2][3][3].x = -2 ; G[2][3][3].y = 1 ; G[2][3][3].Col = 4 ; // 4 G[3][0][0].x = 0 ; G[3][0][0].y = 0 ; G[3][0][0].Col = 5 ; G[3][1][0].x = 0 ; G[3][1][0].y = 1 ; G[3][1][0].Col = 5 ; G[3][2][0].x = -2 ; G[3][2][0].y = 1 ; G[3][2][0].Col = 5 ; G[3][3][0].x = 2 ; G[3][3][0].y = 1 ; G[3][3][0].Col = 5 ; G[3][0][1].x = 0 ; G[3][0][1].y = 0 ; G[3][0][1].Col = 5 ; G[3][1][1].x = 0 ; G[3][1][1].y = 1 ; G[3][1][1].Col = 5 ; G[3][2][1].x = 2 ; G[3][2][1].y = 1 ; G[3][2][1].Col = 5 ; G[3][3][1].x = 0 ; G[3][3][1].y = 2 ; G[3][3][1].Col = 5 ; G[3][0][2].x = 0 ; G[3][0][2].y = 0 ; G[3][0][2].Col = 5 ; G[3][1][2].x = 2 ; G[3][1][2].y = 0 ; G[3][1][2].Col = 5 ; G[3][2][2].x = 2 ; G[3][2][2].y = 1 ; G[3][2][2].Col = 5 ; G[3][3][2].x = 4 ; G[3][3][2].y = 0 ; G[3][3][2].Col = 5 ; G[3][3][2].y = 0 ; G[3][3][2].Col = 5 ; G[3][0][3].x = 0 ; G[3][0][3].y = 0 ; G[3][0][3].Col = 5 ; G[3][1][3].x = 0 ; G[3][1][3].y = 1 ; G[3][1][3].Col = 5 ; G[3][2][3].x = -2 ; G[3][2][3].y = 1 ; G[3][2][3].Col = 5 ; G[3][3][3].x = 0 ; G[3][3][3].y = 2 ; G[3][3][3].Col = 5 ; // 5 G[4][0][0].x = 0 ; G[4][0][0].y = 0 ; G[4][0][0].Col = 6 ; G[4][1][0].x = 0 ; G[4][1][0].y = 1 ; G[4][1][0].Col = 6 ; G[4][2][0].x = 0 ; G[4][2][0].y = 2 ; G[4][2][0].Col = 6 ; G[4][3][0].x = 2 ; G[4][3][0].y = 2 ; G[4][3][0].Col = 6 ; G[4][0][1].x = 0 ; G[4][0][1].y = 0; G[4][0][1].Col = 6 ; G[4][1][1].x = 0 ; G[4][1][1].y = 1 ; G[4][1][1].Col = 6 ; G[4][2][1].x = 2 ; G[4][2][1].y = 0 ; G[4][2][1].Col = 6 ; G[4][3][1].x = 4 ; G[4][3][1].y = 0 ; G[4][3][1].Col = 6 ; G[4][0][2].x = 0 ; G[4][0][2].y = 0 ; G[4][0][2].Col = 6 ; G[4][1][2].x = 2 ; G[4][1][2].y = 0 ; G[4][1][2].Col = 6 ; G[4][2][2].x = 2 ; G[4][2][2].y = 1 ; G[4][2][2].Col = 6 ; G[4][3][2].x = 2 ; G[4][3][2].y = 2 ; G[4][3][2].Col = 6 ; G[4][0][3].x = 0 ; G[4][0][3].y = 0; G[4][0][3].Col = 6 ; G[4][1][3].x = 0 ; G[4][1][3].y = 1 ; G[4][1][3].Col = 6 ; G[4][2][3].x = -2 ; G[4][2][3].y = 1 ; G[4][2][3].Col = 6 ; G[4][3][3].x = -4 ; G[4][3][3].y = 1 ; G[4][3][3].Col = 6 ; // 6 G[5][0][0].x = 0 ; G[5][0][0].y = 0 ; G[5][0][0].Col = 9 ; G[5][1][0].x = 0 ; G[5][1][0].y = 1 ; G[5][1][0].Col = 9 ; G[5][2][0].x = 0 ; G[5][2][0].y = 2 ; G[5][2][0].Col = 9 ; G[5][3][0].x = -2 ; G[5][3][0].y = 2 ; G[5][3][0].Col = 9 ; G[5][0][1].x = 0 ; G[5][0][1].y = 0 ; G[5][0][1].Col = 9 ; G[5][1][1].x = 0 ; G[5][1][1].y = 1 ; G[5][1][1].Col = 9 ; G[5][2][1].x = 2 ; G[5][2][1].y = 1 ; G[5][2][1].Col = 9 ; G[5][3][1].x = 4 ; G[5][3][1].y = 1 ; G[5][3][1].Col = 9 ; G[5][0][2].x = 0 ; G[5][0][2].y = 0 ; G[5][0][2].Col = 9 ; G[5][1][2].x = 2 ; G[5][1][2].y = 0 ; G[5][1][2].Col = 9 ; G[5][2][2].x = 0 ; G[5][2][2].y = 1 ; G[5][2][2].Col = 9 ; G[5][3][2].x = 0 ; G[5][3][2].y = 2 ; G[5][3][2].Col = 9 ; G[5][0][3].x = 0 ; G[5][0][3].y = 0 ; G[5][0][3].Col = 9 ; G[5][1][3].x = 2 ; G[5][1][3].y = 0 ; G[5][1][3].Col = 9 ; G[5][1][3].x = 2 ; G[5][1][3].y = 0 ; G[5][1][3].Col = 9 ; G[5][2][3].x = 4 ; G[5][2][3].y = 0 ; G[5][2][3].Col = 9 ; G[5][3][3].x = 4 ; G[5][3][3].y = 1 ; G[5][3][3].Col = 9 ;}Cột = 6 ; G[4][1][3].x = 0 ; G[4][1][3].y = 1 ; G[4][1][3].Col = 6 ; G[4][2][3].x = -2 ; G[4][2][3].y = 1 ; G[4][2][3].Col = 6 ; G[4][3][3].x = -4 ; G[4][3][3].y = 1 ; G[4][3][3].Col = 6 ; // 6 G[5][0][0].x = 0 ; G[5][0][0].y = 0 ; G[5][0][0].Col = 9 ; G[5][1][0].x = 0 ; G[5][1][0].y = 1 ; G[5][1][0].Col = 9 ; G[5][2][0].x = 0 ; G[5][2][0].y = 2 ; G[5][2][0].Col = 9 ; G[5][3][0].x = -2 ; G[5][3][0].y = 2 ; G[5][3][0].Col = 9 ; G[5][0][1].x = 0 ; G[5][0][1].y = 0 ; G[5][0][1].Col = 9 ; G[5][1][1].x = 0 ; G[5][1][1].y = 1 ; G[5][1][1].Col = 9 ; G[5][2][1].x = 2 ; G[5][2][1].y = 1 ; G[5][2][1].Col = 9 ; G[5][2][1].y = 1 ; G[5][2][1].Col = 9 ; G[5][3][1].x = 4 ; G[5][3][1].y = 1 ; G[5][3][1].Col = 9 ; G[5][0][2].x = 0 ; G[5][0][2].y = 0 ; G[5][0][2].Col = 9 ; G[5][1][2].x = 2 ; G[5][1][2].y = 0 ; G[5][1][2].Col = 9 ; G[5][2][2].x = 0 ; G[5][2][2].y = 1 ; G[5][2][2].Col = 9 ; G[5][3][2].x = 0 ; G[5][3][2].y = 2 ; G[5][3][2].Col = 9 ; G[5][0][3].x = 0 ; G[5][0][3].y = 0 ; G[5][0][3].Col = 9 ; G[5][1][3].x = 2 ; G[5][1][3].y = 0 ; G[5][1][3].Col = 9 ; G[5][2][3].x = 4 ; G[5][2][3].y = 0 ; G[5][2][3].Col = 9 ; G[5][3][3].x = 4 ; G[5][3][3].y = 1 ; G[5][3][3].Col = 9 ;}Cột = 6 ; G[4][1][3].x = 0 ; G[4][1][3].y = 1 ; G[4][1][3].Col = 6 ; G[4][2][3].x = -2 ; G[4][2][3].y = 1 ; G[4][2][3].Col = 6 ; G[4][3][3].x = -4 ; G[4][3][3].y = 1 ; G[4][3][3].Col = 6 ; // 6 G[5][0][0].x = 0 ; G[5][0][0].y = 0 ; G[5][0][0].Col = 9 ; G[5][1][0].x = 0 ; G[5][1][0].y = 1 ; G[5][1][0].Col = 9 ; G[5][2][0].x = 0 ; G[5][2][0].y = 2 ; G[5][2][0].Col = 9 ; G[5][3][0].x = -2 ; G[5][3][0].y = 2 ; G[5][3][0].Col = 9 ; G[5][0][1].x = 0 ; G[5][0][1].y = 0 ; G[5][0][1].Col = 9 ; G[5][1][1].x = 0 ; G[5][1][1].y = 1 ; G[5][1][1].Col = 9 ; G[5][2][1].x = 2 ; G[5][2][1].y = 1 ; G[5][2][1].Col = 9 ; G[5][2][1].y = 1 ; G[5][2][1].Col = 9 ; G[5][3][1].x = 4 ; G[5][3][1].y = 1 ; G[5][3][1].Col = 9 ; G[5][0][2].x = 0 ; G[5][0][2].y = 0 ; G[5][0][2].Col = 9 ; G[5][1][2].x = 2 ; G[5][1][2].y = 0 ; G[5][1][2].Col = 9 ; G[5][2][2].x = 0 ; G[5][2][2].y = 1 ; G[5][2][2].Col = 9 ; G[5][3][2].x = 0 ; G[5][3][2].y = 2 ; G[5][3][2].Col = 9 ; G[5][0][3].x = 0 ; G[5][0][3].y = 0 ; G[5][0][3].Col = 9 ; G[5][1][3].x = 2 ; G[5][1][3].y = 0 ; G[5][1][3].Col = 9 ; G[5][2][3].x = 4 ; G[5][2][3].y = 0 ; G[5][2][3].Col = 9 ; G[5][3][3].x = 4 ; G[5][3][3].y = 1 ; G[5][3][3].Col = 9 ;}

Những gì được đặt ở trên là tọa độ tương đối của từng khối và màu của khối.

  。

4. Ý tưởng thiết kế

Trước tiên chúng ta hãy xem các loại khối chính, như được hiển thị bên dưới:

class T_Box{ static int Score; static int Xếp hạng; riêng tư: int x,y; // Kiểu int; // Kiểu int fg; // Đồ họa đã thay đổi của một đồ họa nhất định: T_Box(int ​​​​sx = 31 ,int sy = 3 ,int st = 0 ,int f = 0) ; static void staticNum(int num) ; 3 , int st = 0 , int f = 0) ; void Move(int stepA ,int stepB) ; bool Stop() ; void printBox() ; (T_Box tạm thời) ; void Transform() ; bool Judge() ;};

TRONG:

Điểm: thể hiện điểm số của trận đấu;

Xếp hạng: Cho biết cấp độ của trò chơi, được tính dựa trên điểm số;

Mục đích của từng chức năng như sau:

T_Box: Hàm tạo, khởi tạo kiểu tọa độ;

staticNum: Cập nhật điểm số và cấp độ, hiển thị trong hộp nhỏ phía dưới bên phải;

setValue: Đặt tọa độ ban đầu, loại và các thay đổi của khối, trong đó loại và các thay đổi là giá trị ngẫu nhiên;

Di chuyển: Di chuyển khối rơi sang trái, phải và xuống dưới;

Stop: Tính xem trò chơi đã kết thúc chưa;

printBox: Xuất đồ họa hộp ra giao diện;

erasBox: Xóa ô trên giao diện;

Mark: Đánh dấu có nội dung tại vị trí hiện tại;

Tạm dừng: Trò chơi đang tạm dừng và chờ bắt đầu;

nextBox: Hiển thị ô vuông tiếp theo ở ô vuông phía trên bên phải;

Transform: Chuyển đổi kiểu lưới trong quá trình lưới rơi xuống;

Thẩm phán: Thẩm phán xem hình vuông có thể thay đổi phong cách hay không;

Tiếp theo, hãy nói về logic thiết kế của chương trình chính như sau:

// Chương trình chính void Tetris(){ srand(time(0)); // Lấy thời gian hệ thống setBox(); // Đặt đồ họa khác nhau T_Box cd, tempA, tempB // Giá trị ban đầu của mỗi khối rơi tempB . setValue(); // Đặt giá trị ban đầu của hộp tempB.nextBox(tempA); for(int i = 0; ; ++i) { if(!(i%2)) tempA.setValue(); khác tempB.setValue(); if(i%2) tempB.nextBox(tempA), cd = tempA; khác tempA.nextBox(tempB), cd = tempB while(1) { cd.printBox (); // Xuất đồ họa if(cd.Stop()) { color(6); getCoord(20,10); cout<<" T_T Game over T_T"; } Sleep(350); cd.eraseBox(); //Xóa đồ họa cd.Move(0,1); là một nút được nhấn, nếu có thì đó có thể là nút xoay hoặc nút tăng tốc { char ch = getch() { case 'a' : cd.Move(-2,0); Di chuyển một hình vuông sang trường hợp bên trái 'd' : cd.Move(2,0) ; // Di chuyển một hình vuông sang trường hợp bên phải 'w' : cd.Transform() ; // Chuyển đổi trường hợp hình vuông '; s' : cd.Move(0,2); break; // Trường hợp hộp thả 'T' : cd.Pause() ; Nếu không, nó sẽ không được thực thi} } if(cd.Stop()) break; } cd.printBox(); cd.Mark(); // Kiểm tra xem có thể loại bỏ nó không}}

Ý tưởng thiết kế như sau:

1. Đầu tiên, thiết lập đồ họa và giao diện khác nhau;

2. Tạo hình vuông hiện tại và hình vuông tiếp theo, và hình vuông tiếp theo được hiển thị ở hộp phía trên bên phải;

3. Xuất hình vuông rơi hiện tại ra giao diện;

4. Xác định xem trò chơi đã kết thúc chưa;

5. Di chuyển hình vuông xuống dưới;

6. Giám sát việc nhập liệu của người dùng và thực hiện các thao tác do người dùng nhập vào, bao gồm: di chuyển, thả hình vuông, thay đổi kiểu hình vuông, thoát, tạm dừng, v.v.

7. Phát hiện xem hình vuông có giảm xuống đáy hay không và thực hiện theo vòng lặp cho đến khi hình vuông giảm xuống đáy;

8. Lặp lại 2 ~ 7 cho đến khi kết thúc trò chơi;

  。

5. Tóm tắt

Trọng tâm của thiết kế Tetris C++ nằm ở thiết kế giao diện và logic tổng thể của trò chơi. Trong số đó, thiết kế giao diện chủ yếu là lấy tọa độ tương ứng và xuất ra đồ họa tương ứng ở tọa độ tương ứng. chu kỳ để tạo ra các hình vuông rơi xuống và chuyển động của hình vuông được thực hiện thông qua. Điều này đạt được bằng cách xóa hình vuông ở vị trí hiện tại và di chuyển tọa độ tổng thể của hình vuông theo một để hiển thị lại.

Bài viết này kết thúc tại đây, tôi hy vọng nó có thể hữu ích cho bạn và tôi hy vọng bạn có thể chú ý hơn đến nội dung của tôi! .

Liên kết gốc: https://blog.csdn.net/nyist_zxp/article/details/119559201.

Cuối cùng, bài viết về việc lập trình viên cũ dạy bạn hoàn thành trò chơi Tetris C++ trong một ngày sẽ kết thúc tại đây. Nếu bạn muốn biết thêm về việc lập trình viên cũ dạy bạn hoàn thành trò chơi Tetris C++ trong một ngày, vui lòng tìm kiếm bài viết của CFSDN. Hoặc tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

32 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress