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

Đề tài: Chương trình game với bàn phím

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

    Mặc định Chương trình game với bàn phím

    em đang làm bài tập về đổ họa nhưng không biết phải làm thế nao.
    đề bài: viết chương trình tao chữ ngẫu nhiên rớt xuống từ từ, nếu ký tự người dùng nhập vào trùng với ký tự rớt xuống thì tạo chữ ngẫu nhiên khác. nếu chữ rớt xuống hết màn hình hoặc ký tự nhập vào khác với ký tự rớt xuống thì game kết thúc.

    code:

    C++ Code:
    1. #include<iostream.h>
    2. #include <graphics.h>
    3. #include <stdlib.h>
    4. #include <stdio.h>
    5. #include <conio.h>
    6. #include <dos.h>
    7. int key=1;
    8. int y=1,x;
    9. char kt;
    10. void taochu();
    11. void drop(char &kt);
    12.  
    13. void main()
    14. {
    15.     clrscr();
    16.     int gdriver = DETECT, gmode, errorcode;
    17.     initgraph(&gdriver, &gmode, "d:\\borlandc\\bgi");
    18.  
    19.     taochu();
    20.  
    21.     closegraph();
    22. }
    23.  
    24. //--------------------------------------------------------------------------
    25. //------------------cho chu rot
    26. void drop(char &kt)
    27. {
    28.  
    29.     x=random(600);//tao ngau nhien toa do x
    30.  
    31.     do  {
    32.         outtextxy(x,y,&kt);
    33.         delay(10);
    34.         y++;                        //y chay thu 1 den 480
    35.         if (kbhit())                //neu kbhit thi vo day
    36.         {
    37.             if(key==kt)
    38.             {
    39.                 cleardevice();
    40.                 taochu();
    41.             }
    42.  
    43.  
    44.          }
    45.         cleardevice();
    46.     }while(y!=480&&!kbhit()) ;   //trong khi y#480 va chua an ban phim
    47.                                                    //thi chu van rot
    48.         if (kbhit()==kt||y!=480)    //neu chu chay den het
    49.                                                          //hoac kbhit khac chu rot xuong
    50.         {
    51.             closegraph();
    52.             cout<<"game over";
    53.             getch();
    54.         }
    55. }
    56.  
    57. //-------------------------------------------------------
    58. //---------------tao chu ngau nhien
    59.  
    60. void taochu()
    61. {
    62.     setcolor(9);//set mau cho chu
    63.     randomize();
    64.     kt= random (25)+97;//tao ngau nhien ky tu
    65.     settextstyle(7,0,5);//set kieu chu
    66.     drop(kt);
    67. }

    em thấy em sai ở hàm drop() nhưng em sửa kiểu nào nó cũng xuât ra chữ game over!!!

    Chú ý: Lần sau nhớ bỏ code vào thẻ [ c o d e ] [ / c o d e ]
    Posted by: iamvtn
    Đã được chỉnh sửa lần cuối bởi iamvtn : 13-11-2007 lúc 05:37 PM.

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

    Bạn thử thêm getch() vào sau hàm closegraph() trong hàm main() xem.Nếu muốn trông đẹp thì phải viết từ game over trong chế độ đồ họa.

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

    Em đã thử rồi. nếu thêm getch() vào sau hàm closegraph() trong hàm main() thì cũng vậy. chỉ mất công gõ thêm một kí tự bất kì vào để thoát ra thôi.
    mấy anh nhớ đọc kĩ : " nếu ký tự người dùng nhập vào trùng với ký tự rớt xuống thì tạo chữ ngẫu nhiên khác. nếu chữ rớt xuống hết màn hình hoặc ký tự nhập vào khác với ký tự rớt xuống thì game kết thúc"

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

    Dr thấy là chương trình của bạn chưa có logic để thực hiện.
    Dr gợi ý và nhận xét cho bạn như sau:

    Thứ nhất: function drop nên chỉ thực hiện một việc đó là thả ký tự từ y(min) đến y(max).
    Thứ 2: Hàm taochu của bạn làm 2 việc đó là: Tạo ra ký tự và thả ký tự đó. Dr nghĩ nếu là taochu thì chỉ nên làm một nhiệm vụ đó là tạo chữ thôi.
    Thứ 3: Thiếu nguyên một hàm kiểm tra phím nhập vào có trùng với phím đang được thả hay không.
    Cuối cùng: Bạn thực hiện xử lý không chuyên biệt các hàm, dẫn đến tình trạng thừa vẫn thừa, mà thiếu vẫn thiếu.

    Nếu vẫn còn khó khăn, vui lòng không ngần ngại gửi lên để được giúp đỡ nhưng nhớ rằng bài gửi sau của bạn phải đủ để thấy được sự cố gắng và tiến bộ hơn mới có thể nhận được câu trả lời tuyệt vời được.
    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!

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Bạn nên sử dụng đến thời gian hệ thống.
    1.Kiểm tra (t_current -t_drop -> deltat_drop) -> xuất tiếp chữ nếu không có phím nhập vào hoặc lượng chữ ít hơn so với mặc định(tức bạn nhập đúng ký tự.
    2.Kiểm tra (t_current -t_key -> deltat_key) -> tăng tốc độ rơi(tăng độ khó)
    Theo mình thì nên dùng thời gian hay hơn dùng delay();
    Cái nữa là khi có nhấn phím bạn nên gán key=getch(); rồi so sánh key với các ký tự có trên màn hình.
    Với lại theo mình thì không nên sử dụng cleardevice(); sẽ gây giật hình, cái này bạn nên dùng màu nền để lấp thì hay hơn.
    Để mình copy rồi xem thêm code của bạn, có gì trao đổi tiếp
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

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

    Mặc định Chương trình game với bàn phím

    theo lời anh DR em đa sửa bải của minh thanh như thế này. nhưng chữ rớt xuống còn bị giật hình.....
    Em có đọc bài của anh NT_ONLYLOVE nhưng em chỉ hiểu là không duọc dùng cleardevice() để xóa màn hình. và thêm key=getch(); sau kbhit() để bắt ký tự truyền vào. còn thời gian hệ thống thì thực sư em không biết.
    cho em hỏi là "dùng màu nền để lấp thì hay hơn - Nt_OnlyLove" thỉ phải làm sao + làm sao để cho nhiều hon 1 ký tự rớt xuống cùng lúc ?
    cảm ơn các anh.

    C++ Code:
    1.  #include <graphics.h>
    2. #include <stdlib.h>
    3. #include <conio.h>
    4. #include <dos.h>
    5. //------------------------------------------------------------
    6. // Khai bao bien.
    7. char buffer[4096];
    8. int diem,diemtam;
    9. int speed;
    10. int key;
    11. char kt;
    12. char taochu();
    13. void drop(char &kt);
    14. void ket_thuc();
    15.  
    16.  
    17. void main()
    18. {
    19.     int gdriver= DETECT, gmode, errorcode;
    20.     initgraph(&gdriver, &gmode, "E:\\BORLANDC\\BGI");
    21.     clrscr();
    22.     settextstyle(7,0,5);
    23.     setcolor(9);
    24.     diem=-1;
    25.     diemtam=0;
    26.     speed=20;
    27.     do{
    28.         diem++;
    29.         diemtam++;
    30.         taochu();
    31.         drop(kt);
    32.         if (diemtam==2&&speed!=1)//neu tang diemtam len
    33.                      //thi delay(speed) se tang it hon
    34.             speed--;
    35.         else
    36.             diemtam=0;
    37.         }while((key==kt));
    38.  
    39.     ket_thuc();
    40. }
    41.  
    42. //--------------------------------------------------------------------------
    43. //------------------cho chu rot
    44. void drop(char &kt)
    45. {
    46.     int y=0;
    47.     int x=random(620);//tao ngau nhien toa do x
    48.     do
    49.     {
    50.         outtextxy(x,y,&kt);
    51.         delay(speed);
    52.         y++;
    53.         if(y==480)
    54.         ket_thuc();
    55.         cleardevice();
    56.     }while(!kbhit());
    57.     key=getch();
    58. }
    59.  
    60. //---------------------------------------------------------------------------
    61. //---------------tao chu ngau nhien
    62.  
    63. char taochu()
    64. {
    65.  
    66.     randomize();
    67.     int tam=random(6);
    68.     if (tam==2)
    69.         kt= random (9)+48;
    70.     kt= random (25)+97;
    71.     return kt;
    72. }
    73.  
    74. // Ket thuc choi - Xuat ra ket qua.
    75. void ket_thuc()
    76. {
    77.     closegraph();
    78.     gettext(10,10,70,15,buffer);
    79.     gotoxy(20,12);
    80.     textcolor(7);
    81.     if(diem<=30)
    82.     cprintf("Ban dat duoc <%d> diem. Ban choi chua hay !",diem);
    83.     else
    84.     if(diem<=90)
    85.         cprintf("Ban dat duoc <%d> diem. Ban choi tam duoc !",diem);
    86.     else
    87.         cprintf("Ban dat duoc <%d> diem. Ban choi kha hay !",diem);
    88.     getch();
    89. }
    Đã được chỉnh sửa lần cuối bởi iamvtn : 15-11-2007 lúc 09:12 AM.

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

    xin lỗi mấy anh admin. em lại làm sai rồi
    thay vì để trong code /code thi em lai them ca ngoặc vuông. ha ha

  8. #8
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Trích dẫn Nguyên bản được gửi bởi hiepsiden2099 Xem bài viết
    xin lỗi mấy anh admin. em lại làm sai rồi
    thay vì để trong code /code thi em lai them ca ngoặc vuông. ha ha

    Híc lần sau bạn chỉ cần bôi đen code rồi nhấn vào biểu tượng {#} trên thanh công cụ là được. Tớ viết cách ra như vậy để cậu hiểu chứ viết đúng phải viết liền lại. :(

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

  1. Web game:choigameonline.biz-Chơi game online, game vui, game mini, game flash
    Gửi bởi timkiemvn002 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 27-08-2014, 11:08 AM
  2. game online | game mobile| game dien thoai| game casual} game dao vang online
    Gửi bởi ngaytanthe1 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: 15-10-2013, 10:09 AM

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