Android Studio : Lights Game
會實作這個遊戲,最主要的原因是看不懂再玩甚麼,實作之後就會發現遊戲規則。- 點擊 按鈕1 → 按鈕1 與 按鈕2 變色,按鈕4 → 按鈕3 與 按鈕4 變色
- 點擊 按鈕2 → 按鈕1、按鈕2 與 按鈕3 變色,按鈕3 → 按鈕2、按鈕3 與 按鈕4 變色
範例網址:
https://www.youtube.com/watch?v=WrjI8RH25ss
相關資訊圖片:
![[程式] Android Studio : Lights Game Lights Game View (activity_main.xml)畫面](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghY8OR6ZDwSWe97L7MHj7VAysKlmcc1SB1hYuF7TlpksO5eXCN0HQL5pRjAYbnx8akVjV6x3f9vtP4gg6gKqBlNG7i4REgjeUGxr7ylY0V3pcxsahjrx5Bbn6ox8lM8CpY5PFPKdvROJ11/s640/LightsGame_01.jpg) |
Lights Game View (activity_main.xml)畫面 |
![[程式] Android Studio : Lights Game 初始畫面](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIOB54vc4UsLeWS-788dzonqlq0SQsUGFZFb0kl1cmf0v73DHdAhBXPptzz-6VrrK8g95AA_3eXeKnyMrAj2bRM5fhBk8MZN6xt9WzVFrHwKfjIJcMMeGxTXxGgqyDlEeHonStgJEjfxkP/s400/LightsGame_02.jpg) |
初始畫面 |
![[程式] Android Studio : Lights Game 結束畫面](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWBlWaKrq2whVRcMRlXv0CpyOwQRbIkB1y5r6BwwkGXodSdQs4esfk5Oon1DxgUtZKQWSoEbXLl-5woC9mHZPp_9vzDuvrMWkbOXSorEWmNW-xOOKfj80bnN16lx3Dmnjl429Xbht9KcD3/s400/LightsGame_03.jpg) |
結束畫面 |
Source Code:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="10dp"
android:text="Button" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="10dp"
android:text="Button" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="10dp"
android:text="Button" />
<Button
android:id="@+id/b_new"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="20dp"
android:text="New Game" />
</LinearLayout>
MainActivity.java
package tw.idv.wenyen.lightsgame;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
Button button1, button2, button3, button4, b_new;
String buttonColor1, buttonColor2, buttonColor3, buttonColor4;
Random r;
int score = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b_new = (Button) findViewById(R.id.b_new);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
button4 = (Button) findViewById(R.id.button4);
//initial colors
r = new Random();
int temp;
//button1
temp = r.nextInt(3) + 1;
if (temp == 1) {
buttonColor1 = "red";
} else if (temp == 2) {
buttonColor1 = "green";
} else if (temp == 3) {
buttonColor1 = "blue";
}
//button2
temp = r.nextInt(3) + 1;
if (temp == 1) {
buttonColor2 = "red";
} else if (temp == 2) {
buttonColor2 = "green";
} else if (temp == 3) {
buttonColor2 = "blue";
}
//button3
temp = r.nextInt(3) + 1;
if (temp == 1) {
buttonColor3 = "red";
} else if (temp == 2) {
buttonColor3 = "green";
} else if (temp == 3) {
buttonColor3 = "blue";
}
//button4
temp = r.nextInt(3) + 1;
if (temp == 1) {
buttonColor4 = "red";
} else if (temp == 2) {
buttonColor4 = "green";
} else if (temp == 3) {
buttonColor4 = "blue";
}
//apply colors
applyColor(button1, buttonColor1);
applyColor(button2, buttonColor2);
applyColor(button3, buttonColor3);
applyColor(button4, buttonColor4);
//clicks
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonColor1 = changeColor(buttonColor1);
applyColor(button1, buttonColor1);
buttonColor2 = changeColor(buttonColor2);
applyColor(button2, buttonColor2);
checkForWin();
}
});
//clicks
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonColor1 = changeColor(buttonColor1);
applyColor(button1, buttonColor1);
buttonColor2 = changeColor(buttonColor2);
applyColor(button2, buttonColor2);
buttonColor3 = changeColor(buttonColor3);
applyColor(button3, buttonColor3);
checkForWin();
}
});
//clicks
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonColor2 = changeColor(buttonColor2);
applyColor(button2, buttonColor2);
buttonColor3 = changeColor(buttonColor3);
applyColor(button3, buttonColor3);
buttonColor4 = changeColor(buttonColor4);
applyColor(button4, buttonColor4);
checkForWin();
}
});
//clicks
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonColor3 = changeColor(buttonColor3);
applyColor(button3, buttonColor3);
buttonColor4 = changeColor(buttonColor4);
applyColor(button4, buttonColor4);
checkForWin();
}
});
b_new.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
}
});
}
public void checkForWin() {
score++;
if (buttonColor1.equals("green") &&
buttonColor2.equals("green") &&
buttonColor3.equals("green") &&
buttonColor4.equals("green") ) {
Toast.makeText(MainActivity.this, "Winner in " + score + " moves!",Toast.LENGTH_SHORT).show();
button1.setEnabled(false);
button2.setEnabled(false);
button3.setEnabled(false);
button4.setEnabled(false);
}
}
public String changeColor( String color) {
if (color.equals("red")) {
color = "green";
} else if (color.equals("green")) {
color = "blue";;
} else if (color.equals("blue")) {
color = "red";;
}
return color;
}
public void applyColor(Button button, String color) {
if (color.equals("red")) {
button.setBackgroundColor(Color.RED);
} else if (color.equals("green")) {
button.setBackgroundColor(Color.GREEN);
} else if (color.equals("blue")) {
button.setBackgroundColor(Color.BLUE);
}
}
}
實作心得:
程式困難度不高,因此沒有特別寫註解,不過遊戲本身還蠻有趣的,值得玩一玩。
0 意見:
張貼留言