Wednesday, October 4, 2017

Random vị trí ngẫu nhiên cho icon

Bạn muốn icon trong Game xuất hiện ngẫu nhiên tại vị trí nào đó, ví dụ nó chạy qua màn hình rồi lại chạy vào ở vị trí khác không cùng vị trí cũ.
Hãy dùng hàm Random để làm việc này.
Copy những dòng sau vào trong hàm onDraw.
Random generato = new Random();
int so = generato.nextInt(3);
Paint paint = new Paint();
paint.setTextSize(45);
paint.setColor(Color.parseColor("#FF00FF"));
canvas.drawText(so+"", r/2, 100, paint);

Chạy thử để thấy có các số từ 0 đến 2 hiện ra liên tiếp. Hàm random tạo ra các số trong khoảng từ 0 đến nextInt, dùng các số ngẫu nhiên này gán cho vị trí tọa độ của icon sẽ khiến nó xuất hiện ngẫu nhiên.
Giả sử ta có một icon mcuoi chạy qua màn hình.

Nếu ta để y cố định, mỗi lần xuất hiện lại icon đều ở cùng một vị trí.
Ta muốn nó ở vào một vị trí bất kỳ nào đó dọc theo chiều cao của màn hình.
Hãy thêm vào trong lệnh if.
Random generato = new Random();
y = generato.nextInt(c) - mcuoi.getHeight();


Bây giờ icon đã có vị trí ngẫu nhiên mỗi lần xuất hiện lại.
Giả sử ta muốn icon mỗi lần lại là một cái khác, hãy dùng Random để khởi tạo bitmap ngẫu nhiên.
Random generato = new Random();
int so = generato.nextInt(3);
switch (so){
     case 0:
     mcuoi = BitmapFactory.decodeResource
      (this.getResources(), R.drawable. cuoi1);
     break;
     case 1:
     mcuoi = BitmapFactory.decodeResource
      (this.getResources(), R.drawable.cuoi2);
     break;
     case 2:
     mcuoi = BitmapFactory.decodeResource
      (this.getResources(), R.drawable.cuoi3);
     break;
}
Sau đó trong lệnh if ta cũng để Random mỗi lần icon xuất hiện lại.
if(x>r){
x=-mcuoi.getWidth();
Random generato = new Random();
y = generato.nextInt(c) - mcuoi.getHeight();
Random generato2 = new Random();
int so = generato2.nextInt(3);
switch (so){
case 0:
mcuoi = BitmapFactory.decodeResource
      (this.getResources(), R.drawable. cuoi);
break;
case 1:
mcuoi = BitmapFactory.decodeResource
      (this.getResources(), R.drawable.cuoi2);
break;
case 2:
mcuoi = BitmapFactory.decodeResource
      (this.getResources(), R.drawable.cuoi3);
break;
}
}

Bây giờ thì icon mỗi khi xuất hiện ra lại là một ảnh ngẫu nhiên không biết trước được.

No comments:

Post a Comment