Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: [C] QuẢn LÝ NhiỀu ChuyỂn ĐỘng?

  1. #1
    No Avatar
    Nhuan_Trang_Only_Love Khách

    Post [C] QuẢn LÝ NhiỀu ChuyỂn ĐỘng?

    Mình vừa làm xong bài đua ô tô,không hay lắm.
    đây là code của mình


    //dua o to design by nhuan
    #include "graphics.h"
    #include "dos.h"
    #include "stdio.h"
    #include "conio.h"
    #include "alloc.h"
    #include "iostream.h"
    #include "stdlib.h"
    #include "math.h"
    #include "string.h"

    #define gx getmaxx()/2
    #define gy getmaxy()/2

    void msg_hd()//huong dan
    {
    setcolor(RED);
    rectangle(0,0,gx-84,2*gy);
    setfillstyle(7,BLUE);
    floodfill(1,1,RED);
    char *text[]={" "," __!__HUONG DAN CHOI__!__", "_Ban co gang di chuyen xe",
    "'mau trang' tu noi co ten","cua ban den noi co ten cua","nguoi ay...Bang cac phim",
    "mui ten,ban co the Tien,Lui","Sang Trai hoac Phai.Tuy","nhien ban khong nen bam liet",
    "mot nut nhat dinh,ma tung", " nhat mot de de dieu khien ","Sau do ban phai",
    "quay tro ve vi tri co ten","cua ban sau do lai tiep tuc.","_Moi lan nhu vay ban","duoc cong 10% vao 'ty le%'",
    "____________________________"," !CHUC BAN THANH CONG!",
    "____________________________","Ban co the bam ESC de thoat",
    "Khi ban bi dem xe ,bam ENTER","de thu lai , hoac phim",
    " 'N' de nhap lai ten","____________________________"};
    //llllllllllllllllll
    for(int i=0;i<=23;i++)
    {
    if(i==1||i==16||i==17||i==18||i==23) setcolor(WHITE);
    else setcolor(LIGHTRED);
    outtextxy(6,i*15,text[i]);
    }
    outtextxy(14,2*gy-100,"_______CHINH PHUC_______");
    outtextxy(14,2*gy-20,"DESIGN BY NHUAN _ K46 CNTT");
    }
    void oto_vc()
    {
    setcolor(GREEN);
    rectangle(15,0,30,60);
    rectangle(0,0,45,15);
    rectangle(0,30,45,45);
    }
    void oto_kc()
    {
    setcolor(YELLOW);
    rectangle(115,0,130,60);
    rectangle(100,15,145,30);
    rectangle(100,45,145,60);
    }
    struct toa_do //toa do put
    {
    int x;
    int y;
    int DT;
    };
    void xuat(toa_do ot[3],void *tranh,int &DL)//vat can
    {
    putimage(ot[0].x,ot[0].y,tranh,XOR_PUT);
    putimage(ot[1].x,ot[1].y,tranh,XOR_PUT);
    putimage(ot[2].x,ot[2].y,tranh,XOR_PUT);

    delay(DL);

    putimage(ot[0].x,ot[0].y,tranh,XOR_PUT);
    putimage(ot[1].x,ot[1].y,tranh,XOR_PUT);
    putimage(ot[2].x,ot[2].y,tranh,XOR_PUT);
    }
    void put_my_car(int my_car_x,int my_car_y,void*my_car)
    {
    putimage(my_car_x,my_car_y,my_car,XOR_PUT);//my_car
    }
    void put(void *tranh,void *my_car)//ham put vi tri
    {
    toa_do oto[3];
    randomize();
    int tf=random(2);//true false
    int my_car_x=gx+1,my_car_y=2*gy-61;
    int game_over=0;//dieu kien dam nhau
    int add_diem=2;
    int lan_chinh_phuc=0;
    int DL=70;
    char ch;
    char *ty_le[11]={"0","10","20","30","40","50","60","70","80","90" ,"100"};
    oto[0].x=gx-46;
    oto[0].y=0;
    oto[0].DT=5;
    oto[1].x=gx+1;
    oto[1].y=-61;
    oto[1].DT=5;
    oto[2].y=-122;
    oto[2].DT=5;
    put_my_car(my_car_x,my_car_y,my_car);
    setcolor(11);
    circle(2*gx-120,gy,20);
    setfillstyle(1,12);
    floodfill(2*gx-120,gy,11);
    setcolor(WHITE);
    outtextxy(2*gx-124,gy-5,ty_le[lan_chinh_phuc]);//ty le
    while(ch!=27&&lan_chinh_phuc!=11)
    {
    if(tf) oto[2].x=oto[0].x;
    else oto[2].x=oto[1].x;
    if(oto[0].y>2*gy) oto[0].y=-abs(oto[1].y-2*gy)+60 ; //oto 1 ben trai
    if(oto[1].y>2*gy) oto[1].y=-abs(oto[2].y-2*gy)+60 ; //oto 2 ben phai
    if(oto[2].y>2*gy) {oto[2].y=-abs(oto[0].y-2*gy)+60;if(tf) tf=0 ;else tf++; } //oto 3 trai or phai
    //_____________________________
    oto[0].y+=oto[0].DT;
    oto[1].y+=oto[1].DT;
    oto[2].y+=oto[2].DT;
    //_____________________________
    if(oto[0].y-oto[1].y<61){if(oto[0].DT>1)oto[0].DT--;if(oto[1].DT<9)oto[1].DT++;}
    if(oto[0].y-oto[2].y<61){if(oto[0].DT>1)oto[0].DT--;if(oto[2].DT<9)oto[2].DT++;}
    if(oto[1].y-oto[2].y<61){if(oto[1].DT>1)oto[1].DT--;if(oto[2].DT<9)oto[2].DT++;}
    if(oto[1].y-oto[0].y<61){if(oto[1].DT>1)oto[1].DT--;if(oto[0].DT<9)oto[0].DT++;}
    if(oto[2].y-oto[0].y<61){if(oto[2].DT>1)oto[2].DT--;if(oto[0].DT<9)oto[0].DT++;}
    if(oto[2].y-oto[1].y<61){if(oto[2].DT>1)oto[2].DT--;if(oto[1].DT<9)oto[1].DT++;}
    //_____________________________
    if(oto[0].y+122<oto[1].y){if(oto[0].DT<9)oto[0].DT++;if(oto[1].DT>1)oto[1].DT--;}
    if(oto[0].y+122<oto[2].y){if(oto[0].DT<9)oto[0].DT++;if(oto[2].DT>1)oto[2].DT--;}
    if(oto[1].y+122<oto[2].y){if(oto[1].DT<9)oto[1].DT++;if(oto[2].DT>1)oto[2].DT--;}
    if(oto[1].y+122<oto[0].y){if(oto[1].DT<9)oto[1].DT++;if(oto[0].DT>1)oto[0].DT--;}
    if(oto[2].y+122<oto[0].y){if(oto[2].DT<9)oto[2].DT++;if(oto[0].DT>1)oto[0].DT--;}
    if(oto[2].y+122<oto[1].y){if(oto[2].DT<9)oto[2].DT++;if(oto[1].DT>1)oto[1].DT--;}
    //_____________________________
    xuat(oto,tranh,DL);//cac vat can
    if(kbhit())//dieu kien bam phim cua oto
    {
    ch=getch();
    switch(ch)
    {
    //up
    case 72:if(my_car_y>10&&my_car_x<gx+47)
    {
    put_my_car(my_car_x,my_car_y,my_car);
    my_car_y-=10;
    put_my_car(my_car_x,my_car_y,my_car);
    }
    break;
    //down
    case 80:if(my_car_y<2*gy-70&&my_car_x<gx+47)
    {
    put_my_car(my_car_x,my_car_y,my_car);
    my_car_y+=10;
    put_my_car(my_car_x,my_car_y,my_car);
    }
    break;
    //left
    case 75:if(my_car_x>gx-46)
    if(my_car_y==8||my_car_y==2*gy-71)
    {
    put_my_car(my_car_x,my_car_y,my_car);
    my_car_x-=48;
    put_my_car(my_car_x,my_car_y,my_car);
    }
    else
    {
    put_my_car(my_car_x,my_car_y,my_car);
    my_car_x=gx-46;
    put_my_car(my_car_x,my_car_y,my_car);
    }
    break;
    //righ
    case 77:if(my_car_x<gx+47)
    {
    if(my_car_y==2*gy-71||my_car_y==8)
    {
    put_my_car(my_car_x,my_car_y,my_car);
    my_car_x+=48;
    put_my_car(my_car_x,my_car_y,my_car);
    }
    else
    {
    put_my_car(my_car_x,my_car_y,my_car);
    my_car_x=gx+1;
    put_my_car(my_car_x,my_car_y,my_car);
    }
    }
    break;
    //thoat
    case 27:exit(1);
    }
    }
    if(abs(my_car_x-oto[0].x)<5&&abs(my_car_y-oto[0].y)<60) game_over=1;
    if(abs(my_car_x-oto[1].x)<5&&abs(my_car_y-oto[1].y)<60) game_over=1;
    if(abs(my_car_x-oto[2].x)<5&&abs(my_car_y-oto[2].y)<60) game_over=1;

    if(game_over) {put_my_car(my_car_x,my_car_y,my_car);return;}

    if(my_car_y==2*gy-71&&my_car_x>gx+46) add_diem=0;
    if(my_car_y==8&&my_car_x>gx+46) {add_diem++;if(add_diem==1){lan_chinh_phuc++;DL-=5;setcolor(11);circle(2*gx-120,gy,20); setfillstyle(1,12);floodfill(2*gx-120,gy,11);setcolor(WHITE);outtextxy(2*gx-124,gy-5,ty_le[lan_chinh_phuc]);};add_diem=2;}
    }//end while
    }
    main()//chuong trinh chinh
    {
    NT:
    char ch,ng1[27],ng2[27];
    cout<<"\nHay nhap ten cua ban: ";
    gets(ng1);
    cout<<"\nHay nhap ten cua nguoi yeu: ";
    gets(ng2);
    int mh=DETECT,kieu;
    void *tranh,*my_car;
    initgraph(&mh,&kieu,"c:\\C_P_T_Y\\bgi");
    oto_vc();
    tranh=malloc(imagesize(0,0,45,60));
    getimage(0,0,45,60,tranh);
    oto_kc();
    my_car=malloc(imagesize(100,0,145,60));
    getimage(100,0,145,60,my_car);
    cleardevice();
    setcolor(YELLOW);//------------------
    outtextxy(gx+100,2*gy-45,ng1);
    outtextxy(gx+100,32,ng2);//--------------
    setcolor(WHITE);
    line(gx+102+strlen(ng1)*8,2*gy-41,2*gx,2*gy-41);
    line(gx+102+strlen(ng2)*8,36,2*gx,36);
    line(2*gx,36,2*gx,2*gy-41);
    line(2*gx,gy,2*gx-100,gy);
    line(2*gx-120,gy-20,2*gx-120,gy-50);
    line(2*gx-185,gy-50,2*gx-120,gy-50);
    outtextxy(2*gx-180,gy-60,"Ty Le %");
    setcolor(8);
    rectangle(gx-48,0,gx+48,2*gy);//khung bao ngoai
    rectangle(gx+48,6,gx+97,70);
    rectangle(gx+48,2*gy-9,gx+97,2*gy-74);
    setcolor(BLACK);
    line(gx+48,6,gx+48,70);
    line(gx+48,2*gy-9,gx+48,2*gy-74);
    setfillstyle(9,1);
    floodfill(gx,gy,8);
    //msg huong dan
    msg_hd();
    loop://play again
    put(tranh,my_car);//fun put cac vi tri o to
    while(ch!=27)
    {
    ch=getch();
    if(ch==13) goto loop;
    if(ch=='n'||ch=='N') goto NT;
    }
    closegraph();
    }
    //xem xong cho mình ý kiến nha
    /*Mình đang dự định đi làm bài bắn đĩa bay ,với lượng đĩa bay nhiều nhất trên màn hình khoảng 10 đến 15 cái.Tuy nhiên mình chưa nghĩ ra cách quản lý chúng để làm sao chúng cũng chuyển động riêng biệt giống bài trên.
    Ai có ý tưởng hay góp ý cho tôi với......
    thank!
    */

  2. #2
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Chịu thoai, mấy cái đồ họa trên C mình ko có mê nên ko học, đọc ko hiểu
    Học OpenGL đi you, vẽ đẹp hơn mà lại vẽ được cả 3d.

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà nội
    Bài viết
    204

    Làm trên dos ah, sao ko học lập trình trong win đê, đảm bảo ko bao giờ bị nháy hình.
    Life:\> dir

  4. #4
    No Avatar
    Nhuan_Trang_Only_Love Khách

    Thông cảm nha vì mình mới được học một chút về lập trình thui mà
    Với lại là học C, ngoài ra mình không biết chút gì về các ngôn ngữ khác à
    À OpenGL là gì vậy?down nó ở đâu?cho mình chút hướng dẫn về nó được hổng à?
    Với lại mình quan niệm rằng học gì cũng phải nắm được bản chất của nó, và phải nắm vững những cái cơ bản nhất
    Mong nhận được giúp đỡ và chia sẻ

  5. #5
    No Avatar
    Nhuan_Trang_Only_Love Khách

    À quên mất tôi cần nhận được sự chia sẻ về thuật giải của bài này.
    Còn tren win hay dos thì vẫn phải là thuật giải đúng mà?
    Mong nhận được chỉ giáo nha
    THANK!

  6. #6
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định [C] QuẢn LÝ NhiỀu ChuyỂn ĐỘng?

    Nếu muốn làm trên Windows hay một hệ điều hành 32bit nào đó cần thiết phải nghiên cứu đến một trong 2 thứ là: DirectX hoặc OpenLG. Những vấn đề về đồ họa là khá khó, và trừu tượng. Nếu xử lý đồ họa trên Windows thì mọi người khuyến cáo sử dụng DirectX, ngược lại thì sử dụng OpenLG.

    @...
    Lưu ý cách viết tên đề tài nhé. cảm ơn
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

Các đề tài tương tự

  1. Hỏi Nhân vật di chuyển trong XNA bằng cách kết hợp nhiều hình
    Gửi bởi vantaino1 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 11-10-2013, 08:12 PM
  2. Trẻ có hành vi tự tử do chuyển nhà nhiều lần
    Gửi bởi thanhhung2013 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 21-06-2011, 10:11 AM
  3. Giải pháp nào cho việc di chuyển nhiều đối tượng?
    Gửi bởi hotanvu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 03-12-2010, 08:25 AM
  4. Bài toán chuyển một dãy nhiều số nhị phân
    Gửi bởi long221091 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 08-07-2010, 07:00 PM

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