Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 28 kết quả

Đề tài: Lập trình C | Cách tạo 1 bầu trời đầy sao

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Mặc định Lập trình C | Cách tạo 1 bầu trời đầy sao

    Em sưu tầm được code tạo bầu trời đầy sao này cũng hay hay . Các bạn nào đang cần thì tham khảo nhé . Em có chú thích 1 chút về code . Nếu có gì ko hiểu thì cứ bàn luận , hỏi han nhe . ^^
    C Code:
    1. /* Star */
    2. #include <stdio.h>
    3. #include <dos.h>
    4. #include <stdlib.h>
    5.  
    6. #define VIDEO_INT 0x10
    7. #define MAX 100
    8.  
    9. typedef unsigned char BYTE;
    10. BYTE far *video = (BYTE far*)MK_FP(0xA000, 0); //gan dia chi thuc cua man hinh cho con tro video .
    11. struct tagstar {                               //ta can khai bao con tro far do ta can tro den vung nho cua man    
    12.   int status;                                   //hinh ( da thay doi dia chi segment )  .
    13.   int row, col;                                 //dia chi man hinh o mode 0x13 co dia chi segment la A000:0
    14.   int tanggiam;
    15.   int color;
    16. } STAR[MAX]; //khai bao 1 mang STAR
    17.  
    18. void setmode(int mode) //ham setmode cho man hinh . su dung cu phap assembly , o day ta su dung ngat 0x10
    19. {                       //la ngat quan ly man hinh may tinh
    20.   asm {
    21.     mov ax, mode  
    22.     int VIDEO_INT
    23.   }
    24. }
    25.  
    26. void setpixel(int row, int col, BYTE color) //ham nay dung de to mau pixel tai vi tri row , col
    27. {
    28.    video[row*320+col] = color;
    29. }
    30.  
    31. void draw(struct tagstar s, BYTE color) //ham nay dung de ve mot ngoi sao
    32. {
    33.   int i, j;
    34.   switch (s.status) //mot ngoi sao co the co 7 trang thai hien hinh , ta can lua chon
    35.   {
    36.     case 0 : for (i=-3; i<=3; i++)
    37.              {
    38.                setpixel(s.row + i, s.col + i, color);
    39.                setpixel(s.row + i, s.col - i, color);
    40.                setpixel(s.row, s.col + i, color);
    41.                setpixel(s.row + i, s.col, color);
    42.              }
    43.              break;
    44.     case 1 : for (i=-2; i<=2; i++)
    45.              {
    46.                setpixel(s.row + i, s.col + i, color);
    47.                setpixel(s.row + i, s.col - i, color);
    48.                setpixel(s.row, s.col + i, color);
    49.                setpixel(s.row + i, s.col, color);
    50.              }
    51.              break;
    52.     case 2 : for (i=-2; i<=2; i++)
    53.              {
    54.                setpixel(s.row, s.col + i, color);
    55.                setpixel(s.row + i, s.col, color);
    56.              }
    57.              for (i=-1; i<=1; i++)
    58.              {  setpixel(s.row + i, s.col + i, color);
    59.                setpixel(s.row + i, s.col - i, color);
    60.              }
    61.     case 3 : for (i=-2; i<=2; i++)
    62.              {
    63.                setpixel(s.row, s.col + i, color);
    64.                setpixel(s.row + i, s.col, color);
    65.              }
    66.     case 4 : for (i=-1; i<=1; i++)
    67.              {
    68.                setpixel(s.row, s.col + i, color);
    69.                setpixel(s.row + i, s.col, color);
    70.              }
    71.              break;
    72.     case 5 : setpixel(s.row, s.col, color);
    73.              break;
    74.     case 6 : setpixel(s.row, s.col, 8);
    75.              break;
    76.     case 7 : setpixel(s.row, s.col, 7);
    77.              break;
    78.   }
    79. }
    80.  
    81. void star() //ham nay dung de ve 1 bau troi day sao
    82. {
    83.   int i;
    84.   do {
    85.     for (i=0; i<MAX; i++)
    86.       draw(STAR[i], STAR[i].color);
    87.     delay(100);
    88.     for (i=0; i<MAX; i++)
    89.     {
    90.       draw(STAR[i], 0);
    91.       if (STAR[i].tanggiam)
    92.       {
    93.         if (STAR[i].status < 7)
    94.           STAR[i].status++;
    95.         else
    96.           STAR[i].tanggiam = 0;
    97.       }
    98.       else
    99.       {
    100.         if (STAR[i].status > 0)
    101.           STAR[i].status--;
    102.         else
    103.           STAR[i].tanggiam = 1;
    104.       }
    105.     }
    106.   } while (!kbhit());
    107. }
    108.  
    109. void main()
    110. {
    111.   int i;
    112.   randomize();
    113.   for (i=0; i<MAX; i++)
    114.   {
    115.     STAR[i].status = random(8);
    116.     STAR[i].row    = random(200);
    117.     STAR[i].col    = random(320);
    118.     STAR[i].tanggiam = random(2);
    119.     STAR[i].color = random(255)+1;
    120.   }
    121.   setmode(0x13);
    122.   star();
    123.   getch();
    124.   setmode(3); //tro ve man hinh van ban
    125. }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Trông rất lung linh.Tuy nhiên để có thể chạy tốt thì cần thêm
    Code:
    #include <conio.h> //vì sử dụng hàm kbhit()
    sieuphuong cố gắng phát huy nhé ^^

  3. #3
    Ngày gia nhập
    03 2008
    Nơi ở
    TP Cần Thơ
    Bài viết
    5

    thêm lệnh #include<conio.h> thì nó báo lỗi chổ randomize(); là sao vậy bạn

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    9

    sao em chay tren borland C++ 5.02 nó hok chạy nhỉ.Em thêm #include <conio.h> mà nó cứ báo lỗi ở //video[row*320+col] = color;

  5. #5
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Lỗi gì mới được chứ . Thêm vào các thư viện hỗ trợ cho randomize() coi nào ... ???
    ttecak ?

  6. #6
    Ngày gia nhập
    03 2008
    Bài viết
    2

    Mặc định Lập trình C | Cách tạo 1 bầu trời đầy sao

    Mình chạy Borland C 5.02 lại xuất hiện lỗi sau:

    Info :Compiling C:\PROGRAM FILES\BC5\BIN\noname00.cpp
    Error: noname00.cpp(11,11)eclaration syntax error
    Error: noname00.cpp(29,10):Undefined symbol 'video'
    Warn : noname00.cpp(30,2):Parameter 'row' is never used
    Warn : noname00.cpp(30,2):Parameter 'col' is never used
    Warn : noname00.cpp(30,2):Parameter 'color' is never used
    Warn : noname00.cpp(80,2):'j' is declared but never used
    Warn : noname00.cpp(87,35):Conversion may lose significant digits
    Error: noname00.cpp(88,11):Call to undefined function 'delay'
    Error: noname00.cpp(107,19):Call to undefined function 'kbhit'
    Error: noname00.cpp(124,9):Call to undefined function 'getch'


    Vậy lỗi là vì sao mà nó không thể chạy?
    Tiện cho mình hỏi luôn lỗi sau:
    Info :dongho.c: out of date with destination dongho.obj
    Info : dongho.c: source date 3:23:08 AM 5/13/1999 destination date <unknown>
    Info :Compiling E:\Bai tap\GRAPHICS-C\dongho.c
    Error: GRAPHICS.H(20,52):Error directive: BGI graphics not supported under Windows
    Đã được chỉnh sửa lần cuối bởi thienthan_c : 19-03-2008 lúc 04:04 PM.

  7. #7
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Nói chung là bạn có chỉnh lại đường dẫn cho têp tin BGI chưa há ... ^^

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    tớ tét bằng BC3.1 DOS của tớ ko chạy được
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  9. #9
    Ngày gia nhập
    11 2007
    Bài viết
    153

    em test ngon mà , lỗi gì thế các bác ...???
    ttecak ?

  10. #10
    Ngày gia nhập
    03 2008
    Bài viết
    2

    Thank you!.... "chỉnh lại đường dẫn cho têp tin BGI"- nghĩa là làm gì nữa đây. Mong bạn chỉ giúp cụ thể hơn.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn