Nov 9

Đồ họa C++ : Hai chiếc xe đụn nhau Không rõ

_Cute , 20:03 , C#,WPF,Silverlight , Via Tự viết Lớn | Vừa | Nhỏ
Hai chiếc xe đụn nhau

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <dos.h>
#define path "c:\\BORLANDC\\BGI"

struct point{
  int x,y;
public:
  point()
  {
    x=0;
    y=430;
  }
};

#define Round(a) int (a+0.5)


void lineDDA(int x1,int y1,int x2,int y2,int color)
{
  int x = x1;
  float y = y1;

  float m;
  if(x2 == x1)
  {
    if(y1 > y2)
    {
      putpixel(x,Round(y),color);
      for(int i=y1-1;i>=y2;i--)
      {
        y-=1;
        putpixel(x,Round(y),color);
      }
    }
    else
    {
      putpixel(x,Round(y),color);
      for(int i=y1;i<y2;i++)
      {
        y+=1;
        putpixel(x,Round(y),color);
      }
    }
  }
  else
  {
    m = float(y2-y1)/(x2-x1);

    putpixel(x,Round(y),color);
    for(int i=x1;i<x2;i++)
    {
      x++;
      y+=m;
      putpixel(x,Round(y),color);
    }
  }
  if(x1 > x2)
  {
    m = float(y2-y1)/(x1-x2);

    putpixel(x,Round(y),color);
    for(int i=x1-1;i>=x2;i--)
    {
      x--;
      y+=m;
      putpixel(x,Round(y),color);
    }
  }
}
void myrectangle(int x1,int y1,int x2,int y2,int color)
{
  lineDDA(x1,y1,x1,y2,color);
  lineDDA(x1,y2,x2,y2,color);
  lineDDA(x2,y2,x2,y1,color);
  lineDDA(x2,y1,x1,y1,color);
}


void Put8Pixel(int x, int y,int x1,int y1,int Color)
{
  putpixel(x+x1,y+y1,Color);
  putpixel(y+x1,x+y1,Color);
  putpixel(y+x1,-x+y1,Color);
  putpixel(x+x1,-y+y1,Color);
  putpixel(-x+x1,-y+y1,Color);
  putpixel(-y+x1,-x+y1,Color);
  putpixel(-y+x1,x+y1,Color);
  putpixel(-x+x1,y+y1,Color);
}
void mycircle(int x1,int y1,int R, int color)
{
  int x,y;
  x = 0;
  y = R;

  Put8Pixel(x,y,x1,y1,color);
  int p = 1 - R;

  while (x < y)
  {
    if (p < 0)
      p += 2*x + 3;
    else
    {
      p += 2*(x-y) + 5;
      y--;
    }
    x++;
    Put8Pixel(x,y,x1,y1,color);
  }
}

void carDown(point B)
{
    int color;

    color=WHITE;

    lineDDA(B.x-10,B.y-10,B.x+60,B.y-80,color);
    lineDDA(B.x+60,B.y-80,B.x+110,B.y-30,color);
    lineDDA(B.x+110,B.y-30,B.x+40,B.y+40,color);
    lineDDA(B.x+40,B.y+40,B.x-10,B.y-10,color);

    //cai dau xe
    lineDDA(B.x+20,B.y+20,B.x,B.y+40,color);
    lineDDA(B.x,B.y+40,B.x+20,B.y+60,color);
    lineDDA(B.x+20,B.y+60,B.x+40,B.y+40,color);

    mycircle(B.x+40,B.y+40,15,color);
    mycircle(B.x+90,B.y-10,15,color);




    delay(10);


    color=BLACK;

    lineDDA(B.x-10,B.y-10,B.x+60,B.y-80,color);
    lineDDA(B.x+60,B.y-80,B.x+110,B.y-30,color);
    lineDDA(B.x+110,B.y-30,B.x+40,B.y+40,color);
    lineDDA(B.x+40,B.y+40,B.x-10,B.y-10,color);

    //cai dau xe
    lineDDA(B.x+20,B.y+20,B.x,B.y+40,color);
    lineDDA(B.x,B.y+40,B.x+20,B.y+60,color);
    lineDDA(B.x+20,B.y+60,B.x+40,B.y+40,color);

    mycircle(B.x+40,B.y+40,15,color);
    mycircle(B.x+90,B.y-10,15,color);



}


void carUp(point A)
{
    int color;

    color=WHITE;

    lineDDA(A.x,A.y,A.x+60,A.y-60,color);
    lineDDA(A.x+60,A.y-60,A.x+100,A.y-20,color);
    lineDDA(A.x+100,A.y-20,A.x+40,A.y+40,color);
    lineDDA(A.x+40,A.y+40,A.x,A.y,color);

    //cai dau xe
    lineDDA(A.x+80,A.y-40,A.x+100,A.y-60,color);
    lineDDA(A.x+100,A.y-60,A.x+120,A.y-40,color);
    lineDDA(A.x+120,A.y-40,A.x+100,A.y-20,color);

    mycircle(A.x+100,A.y-20,15,color);
    mycircle(A.x+60,A.y+20,15,color);




    delay(10);

    /*if(A.y == getmaxy()/2)
    {
    outtextxy(A.x+40,A.y-100,"^^!");
    getch();
    } */

    color=BLACK;

    lineDDA(A.x,A.y,A.x+60,A.y-60,color);
    lineDDA(A.x+60,A.y-60,A.x+100,A.y-20,color);
    lineDDA(A.x+100,A.y-20,A.x+40,A.y+40,color);
    lineDDA(A.x+40,A.y+40,A.x,A.y,color);

    //cai dau xe
    lineDDA(A.x+80,A.y-40,A.x+100,A.y-60,color);
    lineDDA(A.x+100,A.y-60,A.x+120,A.y-40,color);
    lineDDA(A.x+120,A.y-40,A.x+100,A.y-20,color);

    mycircle(A.x+100,A.y-20,15,color);
    mycircle(A.x+60,A.y+20,15,color);

}



void run(point A,point B)
{
  //point A,B;

  lineDDA(60,getmaxy(),getmaxx()-200,100,2);

  while(!kbhit())
  {
    if(A.x < getmaxx()/3 && B.x > getmaxx()/3)
    {
    carUp(A);
    A.x++;
    A.y--;
    carDown(B);
    B.x--;
    B.y++;
    }
    else
    {
    carUp(A);
    A.x--;
    A.y++;
    carDown(B);
    B.x++;
    B.y--;
    }

  }
}


int main(void)
{
  int gd = DETECT, gmode, errorcode;
  initgraph(&gd,&gmode,path);
  errorcode = graphresult();
  if(errorcode != grOk)
  {
    cout<<"graphics error: "<<grapherrormsg(errorcode);
    cout<<"press any key to halt";
    getch();
    exit(1);
  }
       //  run();
       point A,B;
       A.x=0;A.y=430;
       B.x=330;B.y=100;
       //carUp(A);
       run(A,B);
       //carDown(B);
  getch();
  closegraph();
  return 0;
}

Bài viết số 647 đã được: 3.0/10 (56 Đánh giá)

Bình Luận Qua Facebook
Chia Sẻ: Google Bookmarks Yahoo Bookmarks Đăng lên ZingMe Đăng lên Linkhay Đăng lên TagVn Bookmarks lêb baibu



     [2656] Cách điều chỉnh để Borland C++ 3.1 chạy mượt trên Windows XP   ( 12/10/2009 )
     [4603] Borland C++ 3.1 tự động cài đặt có sẵn bài tập đã giải từ A-Z ( 12/10/2009 )
     [4191] Khái niệm Nạp Chồng Overloading ( 3/7/2009 )
     [2106] Ôn thi cấu trúc dữ liệu câu 8 ( 22/12/2008 )
     [2158] Ôn thi cấu trúc dữ liệu câu 7 ( 22/12/2008 )
     [1527] Ôn thi cấu trúc dữ liệu câu 6 ( 22/12/2008 )
     [1653] Ôn thi cấu trúc dữ liệu câu 3 ( 18/12/2008 )
     [1767] Ôn thi cấu trúc dữ liệu Câu 2 ( 18/12/2008 )
     [2075] CÂy tree ( 17/12/2008 )
     [1638] Ôn thi Cấu trúc dữ liệu Câu 5 ( 14/12/2008 )
     [1527] Ôn thi Cấu trúc dữ liệu Câu 4 ( 14/12/2008 )
     [1484] Ôn thi Cấu trúc dữ liệu Câu 1 ( 14/12/2008 )
     [1769] Chương trình Borland C ( 22/11/2008 )
     [1770] Bài giải đề thi tin A2 và CSLT ( 19/11/2008 )
     [1945] Lập trình C trên Windows (Tiếng Việt) ( 2/11/2008 )
     [7546] Tìm giá trị lớn nhất của 3 số nhập vào ( 16/6/2008 )
     [5342] In ra N số nguyên tố đầu tiên ( 16/6/2008 )
     [2214] Ma trận xoáy trôn ốc ( 16/6/2008 )
     [1574] Bài tập 1 ( 16/6/2008 )
Tags: , , , ,
 

Tên gọi:

Địa chỉ web:

Email:

You can also login with your OpenID:
Mở HTML Mở UBB Mở hình vui Ẩn giấu Hãy nhớ [Đăng nhập] [Đăng ký]