Bài 17: Viết game đua xe đơn giản.

Thảo luận trong 'Điện thoại, viễn thông' bắt đầu bởi g08ct, 2/9/12.

  1. g08ct New Member

    g08ct

    Tham gia ngày:
    15/8/12
    Bài viết:
    1,116
    Đã được thích:
    55
    Điểm thành tích:
    0
    Giới tính:
    Nam
    Hi. Chào các bạn, đến lúc chúng ta tạo ra 1 game rồi.

    Cũng không biết viết cái gì để giúp cho các bạn học tốt hơn, ý tưởng game thì nhiều nhưng để viết ra thì quả là không dễ chút nào cả. Nếu viết 1 game qua khó có lẽ các bạn đọc sẽ tẩu họa nhập mà, lăn ra mà....Hi. Vì những lý do trên nên mình sẽ chỉ viết 1 cái đơn giản thôi.


    Hiện tại các bạn có thể downlaod game này để test trên Vimarket với đường link sau:

    Link downlaod PROJECT:
    http://www.mediafire.com/?lxh85oeoldwzulw

    Nội dung của game đua xe đơn giản như sau:


    1- (Player) Người chơi sẽ điều khiển 1 chiếc Oto. Chiếc oto này có thể chạy sang trái hoặc sang phải (không chạy lên, xuống). Để điều khiển oto này thì ta chỉ cần nghiêng màn hình sang bên nào thì oto chạy sang bến đó.(sử dụng bộ cảm biến).

    2- (Car) Các oto khác sẽ di chuyển ngẫu nhiên trên màn hình (Ngẫu nhiên ở đây là oto xuất hiện ở các làn đường ngẫu nhiên, khi rẽ trái hoặc rẽ phải ngẫu nhiên). Các xe oto này sẽ di chuyển từ trên xuống dưới.

    3- Khi mỗi Car mà di chuyển hết màn hình thì ta cộng thêm điểm cho người chơi, điểm người troi được hiện thị ở góc trên bên trái màn hình.

    4- Trên màn hình khi chơi ta hiện thị thêm 2 phần:
    + Hiện thị phần tạm dừng game ở vị trí góc dưới bên trái màn hình.
    + Hiện thị phần setting góc dưới bên phải màn hình.

    5- Khi Player va chạm với 1 Car nào đó thì trò chơi kết thúc.

    6- Để cho đồ họa có gì đó thêm phần hấp dẫn ta sẽ tạo ra khói đàng sau xe của Player.

    7- Tại phần setting thì ta chỉ cho thiết lập âm lượng của game.

    8- Khi gameover ta lưu số điểm của người chơi lại.(Vì còn đơn giản nên ta lưu dữ liệu dạng file).

    9- Khi hiện thị điểm người chơi ta chỉ hiện thị 5 người đạt điểm cao nhất và sắp xếp giảm dần.

    10- Có thể reset lại điểm.


    Nội dung mình chỉ nói qua vậy thôi, còn một số cái khi làm mình nói tiếp.


    Game được chia thành 4 phần chính:


    1: Có 1 lớp dành cho phần giới thiệu.(Chức năng chính là hiện thị 1 video giới thiệu về game).

    2: Lớp hiện thị phần menu. Lớp này cho bạn chọn để xem thông tin về game, setting và play.

    3: Lớp MainGame là lớp quan trọng nhất, nơi mà người chơi điều khiển oto. Lớp này cho phép người chơi điều khiển oto và có chức năng tạm dùng, chơi tiếp, setting.

    4: Lớp này khi kết thúc game thì lưu số điểm người chơi mà cao hơn 1 người nào trong danh sách đã có, hiện thị danh sách điểm tốp 5. Có thêm chức năng chơi lại, reset lại điểm, chuyển sang menu.

    Tại 3 lớp 2,3,4 khi bạn ấn vào nút back trên thiết bị thì đều có thể thoát được game.


    1 số hình ảnh thiết kế trong game:


    Thiết kế Menu
    View attachment 401

    Thiết kế setting.
    View attachment 402

    Thiết kế infor:
    View attachment 403

    Thiết kế phần hiện thị danh sách điểm.
    View attachment 404

    Thiết kế giao diện chính.
    View attachment 405

    Hiện tại bản thiết kế của mình là dành cho máy tính bảng có độ phân giải là 600 x 800 px.

    Bắt đầu xây dựng game.
    1- Xây dựng lớp hiện thị phần giới thiệu.

    Đầu tiên ta thiết kế XML phần giới thiệu như sau. Tên của layout này là gioithieu.xml

    PHP Code:

    PHP:
    <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent" 
               android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
           <VideoView android:id="@+id/videoView"
                     android:layout_width="fill_parent"
                     android:layout_alignParentRight="true"
                     android:layout_alignParentLeft="true"
                     android:layout_alignParentTop="true"
                     android:layout_alignParentBottom="true"
                     android:layout_height="fill_parent">
            </VideoView>        
        </RelativeLayout>
    Ở đây ta dùng 1 VideoView để hiện thị video. VideoView này được đặt trong
    RelativeLayout nhằm múc đích cho ta kéo cái VideoView full màn hình. Layout này đơn giản nên không giải thích thêm.

    Đây là video được hiện thị khi chúng ta chạy chương trình.

    Phần giới thiệu game là video sau:



    ==> Như vậy phần XML của phần giới thiệu đã xong.
    Giờ ta chuyển sang phần code Java.
    Lớp này có tên là GamePlayActivity.java

    PHP:
    package GamePlay.Gioi;

    import android.app.Activity;
    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnCompletionListener;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.VideoView;

    public class 
    GamePlayActivity extends Activity implements OnCompletionListener,
            
    OnTouchListener {

        private 
    VideoView v;
        private 
    Intent i;

        
    // ----------------------------------------------------------------------------
        
    @Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    Control.init(this);// Khi play thì khởi tạo lại các biến tĩnh
            
            // Sét full màn hình
            
    requestWindowFeature(Window.FEATURE_NO_TITLE);// Không hiện thị tiêu đề
            
    getWindow().setFlags(WindowManager.LayoutParams.FL  AG_FULLSCREEN,
                    
    WindowManager.LayoutParams.FLAG_FULLSCREEN);// Fullscreen
            
    super.onCreate(savedInstanceState);
            
    setContentView(R.layout.gioithieu);
            
            
    // Hiện thị dòng chữ để thông báo cho người dùng biết khi chạm vào màn
            // hình thì bỏ qua phần giới thiệu này.
            
    Tools.senMessenger(this"Touch Skip");

            
    = (VideoViewfindViewById(R.id.videoView);
            
    Uri u Uri.parse("android.resource://" getPackageName() + "/"
                    
    R.raw.video);// Lấy video từ thư mục raw
            
    v.setVideoURI(u);
            
    v.setOnCompletionListener(this);// Khi video đã chạy xong
            
    v.setOnTouchListener(this);// Khi chạm vào màn hình
            
    v.setKeepScreenOn(true);// Khi hiện thị video thì không cho tự động tắt
                                    // màn hình
            
    v.start();

            
    // Khởi tạo intent mà ta muốn chuyển sang sau khi video chơi xong
            
    = new Intent(thisMenu.class);
        }

        
    // ----------------------------------------------------------------------------
        
    public void onCompletion(MediaPlayer arg0) {
            
    // Khi video chạy xong thì ta dựng lại và chuyển sang phần game
            
    this.startActivity(i);
            
    finish();// Kết thúc Intent
        
    }

        
    // ----------------------------------------------------------------------------
        
    public boolean onTouch(View arg0MotionEvent arg1) {
            
    // Khi người chạm vào màn hình.
            
    this.startActivity(i);
            
    finish();// Kết thúc Intent
            
    return false;
        }
    }  
    - Phương thức Control.init(this); này thì đến phần sau mời sẽ giải thích cái này.
    - Các bạn nhớ là file video của chúng ta đặt trong thư mục raw nhé.


    Vì bài viết khá là dài nên mình tách thành phần nhỏ.

    Nhớ thanks khi bài viết có ích nhé. Cảm ơn các bạn, chúc các bạn thành công.

    vangioicnt
    Nguồn: vietandroid
     

    Các file đính kèm:

    • 1.jpg
      1.jpg
      Kích thước:
      17.3 KB
      Đọc:
      21
    • 2.jpg
      2.jpg
      Kích thước:
      24.5 KB
      Đọc:
      14
    • 3.jpg
      3.jpg
      Kích thước:
      30.5 KB
      Đọc:
      14
    • 4.jpg
      4.jpg
      Kích thước:
      16.9 KB
      Đọc:
      14
    • 5.jpg
      5.jpg
      Kích thước:
      19.7 KB
      Đọc:
      15
    4 people like this.
    Đang tải...
  2. HaiHack New Member

    HaiHack

    Tham gia ngày:
    15/1/13
    Bài viết:
    93
    Đã được thích:
    15
    Điểm thành tích:
    0
    Giới tính:
    Nam
    Nơi ở:
    Hanoi, Vietnam
    bài này chưa viết xong đã có bài 18,19 rồi là sao?
     

Chia sẻ trang này