Viết game đua xe đơn giản. Android

Để đưa ra ý tưởng game thì nhiều nhưng viết ra thì không dễ chút nào. Dưới đây là một ví dụ game hết sức đơn giản để giúp các bạn học tốt hơn  trong lập trình game.

Hiện tại các bạn có thể download game này để test trên Vimarket với đường link sau: Game đua xe đơn giản

Link downlaod PROJECT: Source
Nội dung của game đua xe đơn giản như sau:
  •  (Player) Người chơi sẽ điều khiển 1 chiếc ô tô. Chiếc ô tô 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).
  •  (Car) Các ô tô khác sẽ di chuyển ngẫu nhiên trên màn hình (Ngẫu nhiên ở đây là ô tô 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 ô tô này sẽ di chuyển từ trên xuống dưới.
  •  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 chơi được hiện thị ở góc trên bên trái màn hình.
  •  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.
  •  Khi Player va chạm với 1 Car nào đó thì trò chơi kết thúc.
  • Để 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.
  •  Tại phần setting thì ta chỉ cho thiết lập âm lượng của game.
  • 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).
  • 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.
  •  Có thể reset lại điểm.
Nội dung cơ bản, còn một số vấn đề 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 ô tô. 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.
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
Code

<?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.

http://youtu.be/w0kHDeJe1K0

Như vậy phần XML của phần giới thiệu đã xong. Tiếp theo phần code Java.
Lớp này có tên là GamePlayActivity.java

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.FLAG_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”);

v = (VideoView) findViewById(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
i = new Intent(this, Menu.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 arg0, MotionEvent arg1) {
// Khi người chạm vào màn hình.
this.startActivity(i);
finish();// Kết thúc Intent
return false;
}
}