Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用int更改imageview_Java_Android_Arrays_Imageview_Int - Fatal编程技术网

Java 使用int更改imageview

Java 使用int更改imageview,java,android,arrays,imageview,int,Java,Android,Arrays,Imageview,Int,我一整天都在忙这个,请帮帮我。所以我有两个数组,里面装满了两个玩家的五个骰子卷,我想把它们设置成我放在抽屉里的相应骰子图像。这是我的原始代码,在TextView中显示数组 int player1[] = new int[5]; int player2[] = new int[5]; TextView p1Dice, p2Dice; private void displayDice() { StringBuffer sbfNumbers = new StringBuffer();

我一整天都在忙这个,请帮帮我。所以我有两个数组,里面装满了两个玩家的五个骰子卷,我想把它们设置成我放在抽屉里的相应骰子图像。这是我的原始代码,在TextView中显示数组

int player1[] = new int[5];
int player2[] = new int[5];
TextView p1Dice, p2Dice;

private void displayDice() {
    StringBuffer sbfNumbers = new StringBuffer();
    for (int i = 0; i < 5; i++) {
        sbfNumbers.append(player1[i] + " ");
    }
    StringBuffer sbfNumbers2 = new StringBuffer();
    for (int i = 0; i < 5; i++) {
        sbfNumbers2.append(player2[i] + " ");
    }
    p1Dice.setText(sbfNumbers.toString());
    p2Dice.setText(sbfNumbers2.toString());
int player1[]=新int[5];
int player2[]=新int[5];
文本视图p1Dice,p2Dice;
私有void displayDice(){
StringBuffer sbfNumber=新StringBuffer();
对于(int i=0;i<5;i++){
sbfNumbers.append(player1[i]+“”);
}
StringBuffer sbfNumbers2=新的StringBuffer();
对于(int i=0;i<5;i++){
sbfNumbers2.append(player2[i]+“”);
}
p1Dice.setText(sbfNumbers.toString());
p2Dice.setText(sbfNumbers2.toString());
我不知道如何让它显示ImageView

private final static int[] diceImages = new int[] { R.drawable.d1, 
R.drawable.d2, R.drawable.d3, R.drawable.d4, R.drawable.d5, R.drawable.d6 };
ImageView p1Dice1, p1Dice2, p1Dice3, p1Dice4, p1Dice5;

for (int i = 0; i < 5; i++) {
    p1Dice[i].setImageResource(diceImage[player1[i]]);
}
private final static int[]diceImages=new int[]{R.drawable.d1,
R.drawable.d2,R.drawable.d3,R.drawable.d4,R.drawable.d5,R.drawable.d6};
图像视图p1Dice1、p1Dice2、p1Dice3、p1Dice4、p1Dice5;
对于(int i=0;i<5;i++){
p1Dice[i].setImageResource(diceImage[player1[i]]);
}
我错过了什么

这是我的全部代码,抱歉,太乱了。我刚开始自学编程,这是我的第一个程序。任何关于如何改进的建议都非常感谢

package com.kelvinblade.liardice;

import java.util.Random;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

int player1[] = new int[5];
int player2[] = new int[5];
TextView p1Dice, p2Dice, result, whosTurn, tvLog, score;
ImageView p1Dice1, p1Dice2, p1Dice3, p1Dice4, p1Dice5;
Button openDice, callDice;
EditText NumDice, DiceNum;
int NumOfDice, DiceNumber, turn;
int currentDiceQuantity, currentDiceFace;
boolean isOneWildCard = true;
int callLog[] = new int[70];
int playerOneEnergy, playerTwoEnergy;
boolean playerOneStart = true;

private final int[] diceImages = new int[] { R.drawable.d1, R.drawable.d2, R.drawable.d3, R.drawable.d4, R.drawable.d5, R.drawable.d6 };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initializePlaceHolders();
    startGame();
}

// Initialize the Place Holders
private void initializePlaceHolders() {
    p1Dice = (TextView) findViewById(R.id.tvP1Dice);
    p2Dice = (TextView) findViewById(R.id.tvP2Dice);
    openDice = (Button) findViewById(R.id.bOpenDice);
    callDice = (Button) findViewById(R.id.bCallDice);
    whosTurn = (TextView) findViewById(R.id.tvWhosTurn);
    tvLog = (TextView) findViewById(R.id.tvLog);
    score = (TextView) findViewById(R.id.tvScore);
    result = (TextView) findViewById(R.id.tvResult);
    NumDice = (EditText) findViewById(R.id.etNumDice);
    DiceNum = (EditText) findViewById(R.id.etDiceNum);
    p1Dice1 = (ImageView) findViewById(R.id.ivDice1);
    p1Dice2 = (ImageView) findViewById(R.id.ivDice2);
    p1Dice3 = (ImageView) findViewById(R.id.ivDice3);
    p1Dice4 = (ImageView) findViewById(R.id.ivDice4);
    p1Dice5 = (ImageView) findViewById(R.id.ivDice5);
    openDice.setOnClickListener(this);
    callDice.setOnClickListener(this);
}

// Game starts here
public void startGame() {
    playerOneEnergy = 4;
    playerTwoEnergy = 4;
    playGame();
}

// Starts level
public void playGame() {
    if ((playerOneEnergy != 0) && (playerTwoEnergy != 0)) {
        initialize();
        player1 = rollDice();
        player2 = rollDice();
        displayDice();
        displayTurn();
    } else if (playerTwoEnergy == 0) {
        result.setText("Loading Next Stage!");
        startGame();
    } else
        result.setText("Game Over!");
}

// Initialize the Variables
private void initialize() {
    turn = 0;
    currentDiceQuantity = 0;
    currentDiceFace = 0;
    result.setText("New Game.");
    tvLog.setText("Game Log:");
}

// Rolls the Dice
private int[] rollDice() {
    int[] diceArray = new int[5];
    Random randomDice = new Random();
    for (int i = 0; i < 5; i++) {
        diceArray[i] = randomDice.nextInt(6) + 1;
    }
    return diceArray;
}

// Displays the Dice for Player 1 & 2
private void displayDice() {
    StringBuffer sbfNumbers = new StringBuffer();
    for (int i = 0; i < 5; i++) {
        sbfNumbers.append(player1[i] + " ");
    }
    StringBuffer sbfNumbers2 = new StringBuffer();
    for (int i = 0; i < 5; i++) {
        sbfNumbers2.append(player2[i] + " ");
    }
    p1Dice.setText(sbfNumbers.toString());
    p2Dice.setText(sbfNumbers2.toString()); 

// try to display the dice array as image   <here's the problem>
    for (int i = 0; i < 5; i++) {
    p1Dice[i].setImageResource(diceImage[player1[i]]);
    }
    }

// Button actions
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.bCallDice:
        try {
            getCall();
        } catch (Exception e) {
            Dialog d = new Dialog(this);
            d.setTitle("Invalid call. Please try again.");
            d.show();
        }
        if ((validInput()) && (validCall())) 
            runCall();          
        else
            result.setText("Invalid call");
        break;
    case R.id.bOpenDice:
        checkDice();
        break;
    }
}

private void runCall() {
    currentDiceQuantity = NumOfDice;
    currentDiceFace = DiceNumber;
    result.setText("Valid call");
    writeLog();
    displayLog();
    turn++;
    displayTurn();
}

private void startAImove() {
    Random randomAction = new Random();
    int randomCall = randomAction.nextInt(1);
    if ((randomCall == 0) && (!isFirstMove()))
        checkDice();
    else {
        while (!validCall()) {
            NumOfDice = randomAction.nextInt(5) + 1;
            DiceNumber = randomAction.nextInt(5) + 1;
        }
        runCall();
    }
}

// Gets the Call from Player 1
private void getCall() {
    String s = NumDice.getText().toString();
    NumOfDice = Integer.parseInt(s);
    String s1 = DiceNum.getText().toString();
    DiceNumber = Integer.parseInt(s1);
    if (DiceNumber == 1) {
        isOneWildCard = false;
    }
}

// Checks to see if the call is a valid input
private boolean validInput() {
    int MaxNumOfDice = 5;
    int MaxDiceQuantity = 6;
    if ((NumOfDice <= MaxNumOfDice * 2) && (DiceNumber <= MaxDiceQuantity)) {
        return true;
    } else
        return false;
}

// Checks to see if Valid Call
private boolean validCall() {
    if (NumOfDice > currentDiceQuantity) {
        return true;
    } else if (((NumOfDice == currentDiceQuantity) && (currentDiceFace != 1))
            && ((DiceNumber == 1) || (DiceNumber > currentDiceFace))) {
        return true;
    } else {
        return false;
    }
}

// Writes to Log
private void writeLog() {
    callLog[turn * 2] = currentDiceQuantity;
    callLog[turn * 2 + 1] = currentDiceFace;
}

// Display Log
private void displayLog() {
    StringBuffer sbfNumbers = new StringBuffer();
    sbfNumbers.append("Game Log:\n");
    for (int i = 0; i < turn + 1; i++) {
        sbfNumbers.append((i + 1) + ": Player" + (i % 2 + 1) + " "
                + callLog[i * 2] + "x" + callLog[i * 2 + 1] + "\n");
    }
    tvLog.setText(sbfNumbers.toString());
}

// Display who's turn
public void displayTurn() {
    if (whichPlayersTurn() == 1)
        whosTurn.setText("Player 1's Turn...");
    else {
        whosTurn.setText("Player 2's Turn...");
    //  startAImove();
    }
}

// Checks who's turn
private int whichPlayersTurn() {
    boolean isTurnEven = false;
    if (turn % 2 == 0)
        isTurnEven = true;
    if (((playerOneStart) && (isTurnEven))
            || ((!playerOneStart) && (!isTurnEven))) {
        return 1;
    } else
        return 2;
}

// Checks if it's the first move
private boolean isFirstMove() {
    if (currentDiceQuantity == 0)
        return true;
    else
        return false;
}

// Checks the Player 1 & 2 for the Dice
private void checkDice() {
    if (!isFirstMove()) {
        int DiceCount = 0;
        for (int i = 0; i < 5; i++) {
            if (player1[i] == DiceNumber)
                DiceCount++;
            if (player2[i] == DiceNumber)
                DiceCount++;
            if ((player1[i] == 1) && (isOneWildCard))
                DiceCount++;
            if ((player2[i] == 1) && (isOneWildCard))
                DiceCount++;
        }
        if (((DiceCount >= NumOfDice) && (whichPlayersTurn() != 1))
                || ((DiceCount < NumOfDice) && (whichPlayersTurn() == 1))) {
            result.setText("Player 1 Wins!");
            playerTwoEnergy--;
            playerOneStart = false;
        } else {
            result.setText("Player 1 Loses!");
            playerOneEnergy--;
            playerOneStart = true;
        }
        displayWinLost();
        playGame();
    } else
        result.setText("Can not open on first move!");
}

// Display Win / Lose
private void displayWinLost() {
    StringBuffer sbfNumbers = new StringBuffer();
    sbfNumbers.append("Player One Energy : " + playerOneEnergy
            + "\nPlayer Two Energy: " + playerTwoEnergy);
    score.setText(sbfNumbers.toString());
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
}

}
package com.kelvinblade.liardice;
导入java.util.Random;
导入android.app.Activity;
导入android.app.Dialog;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类MainActivity扩展活动实现OnClickListener{
int player1[]=新int[5];
int player2[]=新int[5];
文本查看p1Dice、p2Dice、结果、whostrn、tvLog、分数;
图像视图p1Dice1、p1Dice2、p1Dice3、p1Dice4、p1Dice5;
按钮打开骰子,呼叫骰子;
EditText NumDice,DiceNum;
整数骰子,骰子数,回合;
int currentDiceQuantity,currentDiceFace;
布尔值isOneWildCard=true;
int callLog[]=新int[70];
int PlayerEnergy,PlayerWoenergy;
布尔值开始=真;
私有最终int[]diceImages=newint[]{R.drawable.d1,R.drawable.d2,R.drawable.d3,R.drawable.d4,R.drawable.d5,R.drawable.d6};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
初始化placeholders();
startGame();
}
//初始化占位符
私有无效初始值置换持有人(){
p1Dice=(TextView)findViewById(R.id.tvP1Dice);
p2Dice=(TextView)findViewById(R.id.tvP2Dice);
openDice=(按钮)findViewById(R.id.bOpenDice);
callDice=(按钮)findViewById(R.id.bCallDice);
whosurn=(TextView)findViewById(R.id.tvwhosurn);
tvLog=(TextView)findViewById(R.id.tvLog);
分数=(TextView)findViewById(R.id.tvScore);
结果=(TextView)findViewById(R.id.tvResult);
NumDice=(EditText)findViewById(R.id.etNumDice);
DiceNum=(EditText)findViewById(R.id.etDiceNum);
p1Dice1=(ImageView)findViewById(R.id.ivDice1);
p1Dice2=(ImageView)findViewById(R.id.ivDice2);
p1Dice3=(ImageView)findViewById(R.id.ivDice3);
p1Dice4=(ImageView)findViewById(R.id.ivDice4);
p1Dice5=(ImageView)findViewById(R.id.ivDice5);
openDice.setOnClickListener(this);
callDice.setOnClickListener(this);
}
//比赛从这里开始
公共无效StartName(){
能量=4;
playerTwoEnergy=4;
游戏();
}
//起点标高
公共游戏{
如果((播放能量!=0)和(&(播放能量!=0)){
初始化();
player1=rollDice();
player2=rollDice();
displayDice();
displayTurn();
}否则如果(playerTwoEnergy==0){
result.setText(“加载下一阶段!”);
startGame();
}否则
result.setText(“游戏结束!”);
}
//初始化变量
私有void初始化(){
匝数=0;
当前数量=0;
currentdice=0;
result.setText(“新游戏”);
setText(“游戏日志:”);
}
//掷骰子
私有int[]rollDice(){
int[]数组=新的int[5];
Random randomDice=新的Random();
对于(int i=0;i<5;i++){
diceArray[i]=randomDice.nextInt(6)+1;
}
返回数组;
}
//显示玩家1和2的骰子
私有void displayDice(){
StringBuffer sbfNumber=新StringBuffer();
对于(int i=0;i<5;i++){
sbfNumbers.append(player1[i]+“”);
}
StringBuffer sbfNumbers2=新的StringBuffer();
对于(int i=0;i<5;i++){
sbfNumbers2.append(player2[i]+“”);
}
p1Dice.setText(sbfNumbers.toString());
p2Dice.setText(sbfNumbers2.toString());
//尝试将骰子数组显示为image=numfdice)&&(whichPlayersTurn()!=1))
||((骰子计数

非常感谢您的光临。非常感谢您的帮助。再次感谢

在您的代码中,ImageView不在数组中,因此无法执行p
private ImageView[] p1Dice = new ImageView[5];
p1Dice1.setImageResource(diceImage[player1[0]]);
p1Dice2.setImageResource(diceImage[player1[1]]);    
p1Dice3.setImageResource(diceImage[player1[2]]);    
private ImageView[] p1Dice = new ImageView[5];