Java 使用int更改imageview
我一整天都在忙这个,请帮帮我。所以我有两个数组,里面装满了两个玩家的五个骰子卷,我想把它们设置成我放在抽屉里的相应骰子图像。这是我的原始代码,在TextView中显示数组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();
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];