Thứ Hai, 5 tháng 6, 2017

Vẽ một số hình khối.

1. Vẽ viên gạch.
 

     Video ý tưởng:


     Source Code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include "graphics.h"
#include <time.h>
#pragma comment(lib,"graphics.lib")

#define iCOLOR COLOR(238,38,48)
#define iCOLOR_DAM COLOR(214,16,26);
#define iCOLOR_NHAT COLOR(241,73,82);

void drawBrick(int x, int y, int size)
{
 size--;
 //rgb
 int a[10];
 int color;
 int Denta = size / 9; // Phan chenh lech giua phan ngoai va phan trong
 color = iCOLOR_DAM;
 setcolor(color);   // Thiet dat mau cho vien 
 setfillstyle(SOLID_FILL, color);  // Thiet dat mau cho van o trong hinh ve
 a[0] = x;
 a[1] = y;
 a[2] = x;
 a[3] = y + size;
 a[4] = x + size;
 a[5] = y + size;
 // Khong can hai dong nay
 // De xu dung ham fillpoly ta can toa do cac diem, luu trong mang
 fillpoly(3, a); // Ve tam giac
 color = iCOLOR_NHAT;
 setcolor(color);
 setfillstyle(SOLID_FILL, color);
 a[0] = x;
 a[1] = y;
 a[2] = x + size;
 a[3] = y;
 a[4] = x + size;
 a[5] = y + size;
 fillpoly(3, a); //Tuong tu  ve tam giac
 color = iCOLOR;
 setcolor(color);
 setfillstyle(SOLID_FILL, color);
 bar(x + Denta + 1, y + Denta + 1, x + size - Denta, y + size - Denta); // Ve hinh vuong o trong
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevIstance, LPSTR lpCmdLine, int nCmdShow)
{
 initwindow(400, 400, "Test Brick", 100, 100);
 drawBrick(100, 100, 100);
 while (!kbhit())
 {

 }
 closegraph();
 return 0;
}

2. Updating.....


Rất vui nhận được sự đóng góp của các bạn !!!!

Game hoạt động như thế nào? Cách làm game đơn giản.


    Game được ví như là một bộ phim có sự tương tác của người dùng. Để hiểu về Game trước tiên ta hiểu bản chất của film là gì:
" Phim thực chất là nhiều ảnh được đặt lên trên một màn ảnh, nhằm tạo ra ảo giác về chuyển động. Đây là một hình thức giải trí phổ biến, cho phép con người đưa mình vào thế giới ảo trong một khoảng thời gian ngắn. " - Zing
    Ta có thể dựa vào nguyên tắc làm phim để làm game: Tiếp nhận sự điều khiển của con người và xuất hình ảnh ra màn hình theo một chu kì. Bên cạch đó ta cần có một số cải tiến để game có thể mượt hơn.

    Cơ bản việc game gồm:
          1. Phần nhận chỉ thị: Tiếp nhận chỉ thị của người dùng qua bàn phím hay chuột.
          2. Phần logic game: Xử lý việc hoạt động của game (thắng, thua, chuyển động).
          3. Phần hiển thị ra màn hình: Xuất hình ảnh đã xử lý ra màn hình


  Source Code cơ bản của game đơn giản:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>

int main()
{
 SETUP(); // Khoi tao nhung gia tri ban dau (Ban do, Vat pham, Thiet dat...)
 gameOver = 0;
 while (gameOver == 0)
 {
  INPUT();
  LOGIC();
  DRAW();
  delay(60); // Xuat hinh anh theo chu ki.
 }
 return 0;
}

//###################
//#      LOGIC      #
//###################



//###################
//#      SHOW      #
//###################



//###################
//#      DRAW      #
//###################

Video hướng dẫn làm game Caro đơn giản: Updating...

Thứ Sáu, 2 tháng 6, 2017

Tạo trình đếm thời gian.


Video:
 



Code trong video:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include "graphics.h"
#include <time.h>
#pragma comment(lib,"graphics.lib")

char* chuyenSoThanhChu(int n)
{
 char s[3] = { '\0' };
 if (n < 9)
 {
  s[0] = '0';
  itoa(n, s+1, 10);
 }
 else
 {
  itoa(n, s, 10);
 }
 return s;
}

int main()
{
 initwindow(400, 400, "Test Time", 100, 100);
 time_t timeBegin = time(NULL); // Thoi gian moc
 char s[3];
 rectangle(90, 90, 150, 125);
 while (!kbhit()) // Lap cho den khi nhan phim bat ki
 {
  int thoiGianChenhLech = (int)difftime(time(NULL), timeBegin);
  thoiGianChenhLech += 58; // test thu
  // Nho hon 60
  if (thoiGianChenhLech < 60)
  {
   // in ra luon :v
   outtextxy(100, 100, "00");
   outtextxy(120, 100, ":");
   strcpy(s, chuyenSoThanhChu(thoiGianChenhLech));
   outtextxy(127, 100, s);
  }
  else
  {
   strcpy(s, chuyenSoThanhChu(thoiGianChenhLech / 60));//  Phut
   outtextxy(100, 100, s);
   outtextxy(120, 100, ":");
   strcpy(s, chuyenSoThanhChu(thoiGianChenhLech % 60)); // Giay
   outtextxy(127, 100, s);
  }
 }
 closegraph();
 return 0;
}

Giới thiệu một số hàm để làm game.

      

❤Cửa sổ
    
    int initwindow (int width, int height, const char* title="Windows BGI", 
        int left=0, int top=0, bool dbflag=false, bool closeflag=true);
Tạo một cửa sổ mới.

    void closegraph (int window=ALL_WINDOWS);
Đóng cửa sổ.
    void cleardevice (void);
Xóa màn hình.
    void setcurrentwindow (int window);
Thiết lập cửa sổ mặt định.
    int getcurrentwindow (void);
Lấy số hiệu của của sổ hiện hành.
❤Hệ thống
    void delay (int millisec);
Tạm dừng chương trình. 
❤Vẽ
    void setcolor (int color);
Thiết đặt màu sắc cho chữ, đường.
    void setfillstyle (int pattern, int color);
Thiết đặt màu sắc cho các hình vẽ.
    void circle (int x, int y, int radius);
Vẽ hình tròn.
    void rectangle (int left, int top, int right, int bottom);
Vẽ hình chữ nhật.
    void bar (int left, int top, int right, int bottom);
Vẽ một thanh.
    void bar3d (int left, int top, int right, int bottom, int depth, int topflag);
Vẽ hình khối.
    void fillpoly (int numpoints, int *polypoints);
Vẽ đa giác.
    void outtextxy (int x, int y, char *textstring);
In chữ ra màn hình.
❤Sử dụng chuột
    bool ismouseclick(int kind);
Kiểm tra xem chuột có click không.
    void getmouseclick(int kind, int& x, int& y);
Lấy tọa độ điểm click.
    void clearmouseclick(int kind);
Bỏ đi tọa độ điểm click.
❤Sử dụng phím
    int getch (void);
Lấy kí tự từ nhập vào từ bàn phím.
    int kbhit (void);
Kiểm tra có nút nào trên bàn phím được nhấn.
❤Âm thanh
       bool PlaySound(LPCTSTR pszSound, HMODULE hmod, DWORD   fdwSound);
Chơi bài nhạc từ máy tinh.

NOTE: Mình sẽ viết giải thích các hàm, và cách sử dụng bằng Tiếng Việt trong thời gian tới.

Thứ Năm, 1 tháng 6, 2017

Giới thiệu về thư viện graphics.h

A.       Giới thiệu
-           graphics.h hay tên chính xác và đầy đủ của nó là Borland Graphics Interface – còn được biết đến với tên gọi BGI – là một thư viện đồ họa rất phổ biến trên DOS và các máy tính chạy hệ điều hành Windows thời kì đầu như Windows 95, Windows 98.
-          Thư viện này cung cấp cho người dùng 2 file: graphics.h và graphics.lib để có thể sử dụng được với ngôn ngữ C/C++ cũng như module graph nếu người dùng sử dụng ngôn ngữ Pascal. Bộ thư viện này đi kèm với IDE Borland C++ 3.1 (1992).
-          Một trong những điểm mạnh của thư viện này là việc khởi tạo cũng như sử dụng rất đơn giản, vì vậy mặc dù ra đời rất lâu nhưng hiện tại vẫn có rất nhiều trường đại học sử dụng cho mục đích giảng dạy.
B.      Cài đặt
-          Đầu tiên các bạn cần tải thư viện graphics.h phù hợp với phiên bản Visual Studio đang cài trên máy.
Visual 2008: Tải về
Visual 2010: Tải về
Visual 2012: Tải về
Visual 2013: Tải về
Visual 2015: Tải về
-          Tạo project mới:
New Project ⇒ Đặt tên

Bỏ tick ô create directory for solution để tất cả các file chung một thư mục

 

⇒ Ok

-          Giải nén file thư viện mới tải về, copy hai file graphics.h và graphics.lib vào thư mục project.


-          Chương trình mẫu:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>
#include "graphics.h"
#pragma comment(lib,"graphics.lib")

int main()
{
 initwindow(400, 400, "Hello World", 100, 100);
 line(50, 50, 200, 250);
 while (!kbhit())
 {
  delay(300);
 }
 closegraph();
 return 0;
}



Giải thích:
-  line 3:  Tích hợp thư viện graphics.lib vào mã xử lý (Ở đây file .exe khi build ra sẽ được nhúng thêm graphics.lib vào)
-  line 9 - 13: Tạm dừng chương trình cho đến khi nhấn phím bất kì


➤ Vậy mình đã giới thiệu sơ lược về thư viện graphics.h các bạn có thể xem  bài đăng tiếp theo để tìm hiểu về một số hàm cơ bản trong thư viện graphics.h
➔ Giới thiệu một số hàm để làm game


Series: Hướng dẫn làm game đơn giản bằng ngôn ngữ C/C++



  1. Giới thiệu về thư viện graphics.h
  2. Một số hàm cần thiết cho việc làm game.
  3. Vẽ một số hình khối.
  4. Game hoạt động như thế nào? Cách làm game đơn giản.
  5. Tạo trình đếm thời gian.
  6. Loại bỏ cửa sổ console.
  7. Âm thanh cho game.
  8. Nhạc nền cho game.
  9. Thay đổi icon file game.
  10. Updating.....
Rất mong sự nhận được sự đóng góp của các bạn.