정말 간단한 주사위 게임을 만들려고 노력하고 있습니다 ... 주사위 롤러 게임과 더 비슷하지만 아직 답을 찾을 수없는 문제가 발생했습니다. 그래서 분명히 다이 페이스 (6)에 대해 6 개의 이미지가 있지만 어딘가에 놓친 것은 "주사위가 굴릴 때"이미지에 기본적으로 값을 할당하는 방법입니다. 그래서 일부 게임 논리를 구현하기 시작할 때 나는 죽은 얼굴의 수를 비교할 수 있습니다. 여기까지 내가 지금까지 가지고있는 것이고, 평소와 같이 어떤 도움이라도 대단히 감사 할 것입니다.이미지에 값 지정하기
public class CrapsGameActivity extends CrapsActivity {
private final int rollAnimations = 50;
private final int delayTime = 15;
private Resources res;
private final int[] diceImages = new int[]{R.drawable.die1, R.drawable.die2,
R.drawable.die3, R.drawable.die4, R.drawable.die5,R.drawable.die6};
private Drawable dice[] = new Drawable[6];
private final Random randomGen = new Random();
private int diceSum;
private int roll[] = new int[] {6,6};
private ImageView die1;
private TextView die1_Total;
private int die1_number;
private ImageView die2;
private TextView die2_Total;
private TextView diceTotal;
private LinearLayout diceContainer;
private Handler animationHandler;
private long lastUpdate = -1;
private float x, y, z;
private float last_x, last_y, last_z;
private boolean paused = false;
private static final int UPDATE_DELAY = 50;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
paused = false;
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
setTitle(getString(R.string.app_name));
res = getResources();
for (int i = 0; i<6; i++){
dice[i] = res.getDrawable(diceImages[i]);
}
diceContainer = (LinearLayout) findViewById(R.id.diceContainer);
diceContainer.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
try{
rollDice();
die1_Total.setText("" + roll[0]);
die2_Total.setText("" + roll[1]);
diceTotal.setText(""+ diceSum);
}catch(Exception e) {};
}//end of onClick
});//end of onClick listener
die1 = (ImageView) findViewById(R.id.die1);
die1_Total = (TextView) findViewById(R.id.TV_die1);
die2 = (ImageView) findViewById(R.id.die2);
die2_Total = (TextView) findViewById(R.id.TV_die2);
diceTotal = (TextView) findViewById(R.id.TV_diceTotal);
animationHandler = new Handler(){
public void handleMessage(Message msg){
die1.setImageDrawable(dice[roll[0]]);
die2.setImageDrawable(dice[roll[1]]);
}//end of handle message
};//end of Handler
}
private void rollDice() {
if(paused) return;
new Thread(new Runnable(){
@Override
public void run(){
for(int i = 0; i < rollAnimations; i++){
doRoll();
}//end of for statement
}//end of run()
}).start();//end of thread
}//end of rollDice()
private void doRoll(){//only does a single roll
roll[0] = randomGen.nextInt(6);
roll[1] = randomGen.nextInt(6);
diceSum = roll[0] + roll[1] + 2;
synchronized(getLayoutInflater()){
animationHandler.sendEmptyMessage(0);
}
try{//delay for smooth animations
Thread.sleep(delayTime);
}catch(final InterruptedException e){
e.printStackTrace();
}
}//end of doRoll()
public void onResume(){
super.onResume();
paused = false;
}//end of onResume()
public void onPause(){
super.onPause();
paused = true;
}//end of onPause()
}//end of activity
제대로 수행하지 않았지만 코드 (아래). 에뮬레이터에서 숫자를보기 위해이 값을 사용하면 무작위이며 주사위의 액면가에 해당하지 않습니다. 마치 주사위의 액면가를 합치려면 (다시 지금 뛰었습니다) 0은 6면, 2면은 3면으로 총 주사위면 9를 주어야하지만 2 점을 얻습니다.
public void onClick(View v) {
try{
rollDice();
die1_Total.setText("" + roll[0]);
die2_Total.setText("" + roll[1]);
diceTotal.setText(""+ diceSum);
}catch(Exception e) {};
그것은 관련이 없지만 'extends CrapsActivity'를 사용하여 코드를 게시하면 약간 웃을 수 있습니다. – corsiKa
나는 상당한 시간 동안 코드를 쳐다 보면서 '사소한 일들'에서 웃음을 뽑아 낼 수있을 것 같았습니다. – FROSTYSMOOTH