Gia sư Cần Thơ, Dạy Kèm Cần Thơ

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


Mô phỏng cảnh lửa cháy trong C

Share
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Mô phỏng cảnh lửa cháy trong C

Bài gửi  admin on Thu Nov 12, 2009 1:26 pm

Mô tả cảnh lửa cháy viết bằng ngôn ngữ hệ thống trong C.
Code:
#include "stdlib.h"
#include "conio.h"
unsigned char flames[330][80];
void Pal(unsigned char Col,unsigned char R,unsigned char G,unsigned char B) {
   asm {
      mov dx,3c8h
      mov al,[Col]
      out dx,al
      inc dx
      mov al,[R]
      out dx,al
      mov al,[G]
      out dx,al
      mov al,[B]
      out dx,al

   }
}
void SetFirePalete() {
   for (int i = 0; i<50; i++) {
      Pal(i,0,0,0);
      Pal(i+50,i,0,0);
      Pal(i+100,49,i,0);
      Pal(i+150,49,49,i);
   }
}
void Fire() {
   int x,y,x1,y1;
   unsigned char Col;
   for(x1=-5; x1<=325; x1++)
   for(y1=120; y1<=200; y1++) {
      y = y1-120;
      x =x1 + 5;
      Col=(flames[x-1][y+1]+flames[x][y+1]+flames[x+1][y+1]+flames[x][y+2])/4;
      if(y1 ==199){ Col= random(80)+120;}
      if (Col>0) Col--;
      flames[x][y]= Col;
      if ( x1>0 && x1<319 && y1<199)
      asm {
         mov ax,0A000h
         mov es,ax
         mov bx,[y1]
         shl bx,1
         shl bx,1
         shl bx,1
         shl bx,1
         shl bx,1
         shl bx,1
         mov di,bx
         shl bx,1
         shl bx,1
         add di,bx
         add di,[x1]
         mov ah,[Col]
         mov es:[di],ah
      }
   }
}
void main () {
   asm { mov ax,13h; int 10h; }
   SetFirePalete();
   while(!kbhit( )) Fire();
   asm { mov ax,3h; int 10h; mov ah,4ch; int 21h;}
}

ztanzzthanhz
Trung cấp
Trung cấp

Tổng số bài gửi : 60
Points : 100
Join date : 13/11/2009
Age : 26
Đến từ : Bến Tre

Re: Mô phỏng cảnh lửa cháy trong C

Bài gửi  ztanzzthanhz on Mon Nov 23, 2009 7:22 pm

Thầy ơi cho em hỏi:

Thủ tục Pal(Col,R,G,B) tác dụng là gì vậy thầy? Thầy giải thích từng lệnh trong thủ tục này được không thầy?

Em có hứng thú với chương trình này lắm! nhưng ngặt nỗi nhiều chỗ em chưa hiểu!
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Re: Mô phỏng cảnh lửa cháy trong C

Bài gửi  admin on Wed Nov 25, 2009 11:06 pm

ztanzzthanhz đã viết:Thầy ơi cho em hỏi:

Thủ tục Pal(Col,R,G,B) tác dụng là gì vậy thầy? Thầy giải thích từng lệnh trong thủ tục này được không thầy?

Em có hứng thú với chương trình này lắm! nhưng ngặt nỗi nhiều chỗ em chưa hiểu!

R: Red
G: Green
B: Blue
đây là 3 màu cơ bản để tạo nên các màu khác.
Pal(Col,R,G,B): xuất 1 điểm ra ngoài màn hình vơi màu xác định dựa trên 3 màu.
avatar
peterdrew
Nhập môn
Nhập môn

Tổng số bài gửi : 19
Points : 25
Join date : 09/07/2010
Age : 34
Đến từ : Viện Vũ khí_Bộ Quốc phòng

Re: Mô phỏng cảnh lửa cháy trong C

Bài gửi  peterdrew on Fri Jul 09, 2010 8:31 pm

Vấn đề Inline ASM trong C/C++ cũng không phải là chuyện dễ (các bạn cũng phải nắm được ngôn ngữ ASM mới có thể làm được); việc làm này nếu không cẩn trọng sẽ gây Bug lớn cho chương trình, hoặc làm chương trình "chậm" hơn và có thể phình to (dung lượng exe) hơn, tuy nhiên nếu tận dụng tốt việc Inline ASM vào C thì chương trình của chúng ta có thể chạy nhanh hơn so với code C/C++ thuần, vậy thì tại sao? Vì lệnh ASM được thực thi nhanh hơn so với lệnh của C/C++ (vì một lệnh của C/C++ tương đương với một vài mã máy)....

Ở bài trên Admin đã Inline ASM vào code C, Peter thấy chuẩn rồi, và chỉ lưu ý rằng code này chỉ sử dụng được với biên dịch 16 bít; chứ sang 32bít (hoặc..cao hơn) sẽ không bao giờ làm được điều đó (vì các ngắt DOS không còn dùng được), mà thay thế các ngắt này là các hàm API.

Một phương pháp dùng ASM là xây dựng một Module dùng cho C, kết hợp với Module của C chúng ta tiến hành hợp dịch,....

vingaymaino1
Nhập môn
Nhập môn

Tổng số bài gửi : 3
Points : 3
Join date : 23/05/2011

cho e xin code

Bài gửi  vingaymaino1 on Wed May 25, 2011 10:21 pm

chào thầy cô
thây cô chỉ giúp cho e cái code . chỉ ra tổng số trụ cầu,cầu của một đồ thi,đồ thị liên thông hay không liên thông.đơn đồ thị, (đa đồ thị), đỉnh treo, đỉnh cô lập.
Thanks mọi người!!
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Re: Mô phỏng cảnh lửa cháy trong C

Bài gửi  admin on Thu May 26, 2011 8:31 am

vingaymaino1 đã viết:chào thầy cô
thây cô chỉ giúp cho e cái code . chỉ ra tổng số trụ cầu,cầu của một đồ thi,đồ thị liên thông hay không liên thông.đơn đồ thị, (đa đồ thị), đỉnh treo, đỉnh cô lập.
Thanks mọi người!!

Em vào mục Đồ thị và thuật giải để xem các bài toán đó nhe!

vingaymaino1
Nhập môn
Nhập môn

Tổng số bài gửi : 3
Points : 3
Join date : 23/05/2011

cho e xin code

Bài gửi  vingaymaino1 on Thu May 26, 2011 5:46 pm

cho em xon code vẽ các thuật toán clipping trong môn đồ họa máy tinh
avatar
DapConMuoi
Nhập môn
Nhập môn

Tổng số bài gửi : 3
Points : 3
Join date : 29/05/2010
Age : 26
Đến từ : Vĩnh Long

Re: Mô phỏng cảnh lửa cháy trong C

Bài gửi  DapConMuoi on Sun Feb 19, 2012 12:24 pm

vingaymaino1 đã viết:cho em xon code vẽ các thuật toán clipping trong môn đồ họa máy tinh
Bạn vào liên kết này để tìm hiểu nhé http://www.scribd.com/doc/49630969/42/Cac-thu%E1%BA%ADt-toan-Clipping

Sponsored content

Re: Mô phỏng cảnh lửa cháy trong C

Bài gửi  Sponsored content


    Hôm nay: Mon Dec 18, 2017 9:38 pm