728x90
반응형
💡구구단 게임 - 08/03
📝MainActivity.java
package com.example.gugudan;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView tv_number;
TextView tv_result;
TextView tv_answer;
TextView tv_count;
Button btn_start;
Button btn_check;
Button btn_cancel;
String user_number = "";
int a = 0, b = 0, count = 0;
String result = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
tv_number = findViewById(R.id.tv_number);
tv_result = findViewById(R.id.tv_result);
tv_answer = findViewById(R.id.tv_answer);
tv_count = findViewById(R.id.tv_count);
btn_start = findViewById(R.id.btn_start);
btn_check = findViewById(R.id.btn_check);
btn_cancel = findViewById(R.id.btn_cancel);
btn_start.setOnClickListener(lis);
btn_check.setOnClickListener(lis);
btn_cancel.setOnClickListener(lis);
}
public void onClick1(View v) {
user_number = user_number + ((Button) v).getText().toString();
tv_result.append(((Button) v).getText().toString());
}
View.OnClickListener lis = new View.OnClickListener() {
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.btn_start) {
Toast.makeText(MainActivity.this, "게임을 시작합니다!", Toast.LENGTH_SHORT).show();
a = (int) (Math.random() * 9) + 1;
b = (int) (Math.random() * 9) + 1;
result = String.valueOf(a * b);
String number = a + "x" + b;
tv_number.setText(number);
} else if (id == R.id.btn_check) {
if (result.equals(user_number)) {
tv_answer.setText("");
tv_answer.append("정답입니다!");
count++;
tv_count.setText(String.valueOf(count));
user_number = "";
a = (int) (Math.random() * 9) + 1;
b = (int) (Math.random() * 9) + 1;
result = String.valueOf(a * b);
String number = a + "x" + b;
tv_number.setText(number);
tv_result.setText("");
} else {
tv_answer.setText("");
tv_answer.append("오답입니다.");
user_number = "";
}
} else if (id == R.id.btn_cancel) {
tv_result.setText("");
}
}
};
}
📝layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#576F72"
android:orientation="vertical"
android:padding="20dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:backgroundTint="#E2DCC8"
android:padding="15dp"
android:text="게임시작"
android:textColor="@color/black"
android:textSize="15dp" />
<Button
android:id="@+id/btn_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_toRightOf="@id/btn_start"
android:backgroundTint="#E2DCC8"
android:padding="15dp"
android:text="게임종료"
android:textColor="@color/black"
android:textSize="15dp" />
<TextView
android:id="@+id/tv_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/btn_start"
android:layout_marginRight="5dp"
android:layout_toRightOf="@id/btn_end"
android:background="#94B49F"
android:padding="15dp"
android:text="정답갯수"
android:textColor="@color/white"
android:textSize="15dp" />
<TextView
android:id="@+id/tv_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/btn_start"
android:layout_toRightOf="@id/tv_count"
android:background="#94B49F"
android:gravity="center"
android:padding="15dp"
android:text="시간"
android:textColor="@color/white"
android:textSize="15dp" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="130dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_number"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="#94B49F"
android:gravity="center"
android:text="문제"
android:textColor="@color/white"
android:textSize="50dp" />
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#94B49F"
android:gravity="center"
android:textColor="@color/white"
android:textSize="50dp" />
</LinearLayout>
<GridLayout
android:layout_width="match_parent"
android:layout_height="330dp"
android:columnCount="3"
android:orientation="horizontal"
android:rowCount="4">
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="1"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="2"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="3"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="4"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="5"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="6"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="7"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="8"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="9"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="0"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:id="@+id/btn_check"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:text="정답확인"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:text="지우기"
android:textColor="@color/black"
android:textSize="20dp" />
</GridLayout>
<TextView
android:id="@+id/tv_answer"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/white"
android:text="결과 : "
android:gravity="left"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:textSize="25dp"/>
</LinearLayout>
💁♀️다른 방법으로 작성한 코드
▪️ 같은 리스너를 사용하는 버튼들의 객체를 모아 배열에 저장할 수 있다.
package com.example.gugudan;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
int number_ids[] = { R.id.btn_0, R.id.btn_1, R.id.btn_2,
R.id.btn_3, R.id.btn_4, R.id.btn_5,
R.id.btn_6, R.id.btn_7, R.id.btn_9, R.id.btn_0};
TextView tv_answer;
TextView tv_question;
int answer;
int right_count;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.jhl);
tv_answer = findViewById(R.id.tv_answer);
tv_question = findViewById(R.id.tv_question);
findViewById(R.id.btn_start).setOnClickListener(this);
findViewById(R.id.btn_finish).setOnClickListener(this);
findViewById(R.id.btn_check).setOnClickListener(this);
findViewById(R.id.btn_del).setOnClickListener(this);
setNumberListener();
}
void setNumberListener(){
Button btn;
for(int i = 0 ; i < number_ids.length ;i++){
btn = findViewById(number_ids[i]);
btn.setOnClickListener(btnListener);
}
}
View.OnClickListener btnListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
tv_answer.append(((Button)v).getText());
}
};
@Override
public void onClick(View v) {
int nId = v.getId();
switch (nId){
case R.id.btn_start:
gameInit();
makeQuestion();
break;
case R.id.btn_check:
int answer = Integer.parseInt(tv_answer.getText().toString());
if(this.answer == answer){
rightAnswer();
}else{
wrongAnswer();
}
tv_answer.setText("");
makeQuestion();
break;
case R.id.btn_del:
tv_answer.setText("");
break;
default:
}
}
void gameInit(){
tv_question.setText("");
tv_answer.setText("");
right_count = 0;
}
void makeQuestion(){
int n1 = (int)(Math.random()*8) + 2;
int n2 = (int)(Math.random()*8) + 2;
answer = n1* n2;
tv_question.setText(n1 + " x " + n2);
}
public void rightAnswer(){
right_count++;
((TextView)findViewById(R.id.tv_count)).setText(""+right_count);
Toast.makeText(this, "정답", Toast.LENGTH_SHORT).show();
}
public void wrongAnswer(){
tv_answer.setText("오답");
Toast.makeText(this, "오답", Toast.LENGTH_SHORT).show();
}
}
📌완성
💡구구단 게임 - 08/11
📝layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#576F72"
android:orientation="vertical"
android:padding="20dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:backgroundTint="#E2DCC8"
android:padding="15dp"
android:text="게임시작"
android:textColor="@color/black"
android:textSize="15dp" />
<Button
android:id="@+id/btn_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_toRightOf="@id/btn_start"
android:backgroundTint="#E2DCC8"
android:padding="15dp"
android:text="게임종료"
android:textColor="@color/black"
android:textSize="15dp" />
<TextView
android:id="@+id/tv_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/btn_start"
android:layout_marginRight="5dp"
android:layout_toRightOf="@id/btn_end"
android:background="#94B49F"
android:padding="15dp"
android:text="0"
android:textColor="@color/white"
android:textSize="15dp" />
<TextView
android:id="@+id/tv_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/btn_start"
android:layout_toRightOf="@id/tv_count"
android:background="#94B49F"
android:gravity="center"
android:padding="15dp"
android:text="시간"
android:textColor="@color/white"
android:textSize="15dp" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="130dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_number"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="#94B49F"
android:gravity="center"
android:text="문제"
android:textColor="@color/white"
android:textSize="50dp" />
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#94B49F"
android:gravity="center"
android:textColor="@color/white"
android:textSize="50dp" />
</LinearLayout>
<GridLayout
android:layout_width="match_parent"
android:layout_height="330dp"
android:columnCount="3"
android:orientation="horizontal"
android:rowCount="4">
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="1"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="2"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="3"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="4"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="5"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="6"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="7"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="8"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="9"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:onClick="onClick1"
android:text="0"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:id="@+id/btn_check"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:text="정답확인"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_columnWeight="1"
android:backgroundTint="#E2DCC8"
android:text="지우기"
android:textColor="@color/black"
android:textSize="20dp" />
</GridLayout>
<TextView
android:id="@+id/tv_answer"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/white"
android:text="결과 : "
android:gravity="left"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:textSize="25dp"/>
</LinearLayout>
📝activity_main2.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:orientation="vertical"
android:padding="20dp"
tools:context=".MainActivity2">
<TextView
android:id="@+id/tv_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/purple_700"
android:textColor="@color/white"
android:gravity="center"
android:textSize="20dp" />
</LinearLayout>
📝MainActivity.java
package com.example.gugudangame;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView tv_number;
TextView tv_result;
TextView tv_answer;
TextView tv_count;
TextView tv_time;
Button btn_start;
Button btn_check;
Button btn_cancel;
Button btn_end;
String user_number = "";
int a = 0, b = 0, count = 0;
String result = "";
int second = 60;
Intent intent;
Handler handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
// second = 10;
if(msg.what == 1) {
if(second != 0) {
btn_end.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeMessages(1);
tv_time.setText("시간");
tv_number.setText("문제");
tv_result.setText("");
tv_count.setText("0");
tv_answer.setText("게임 종료!");
}
});
tv_time.setText(second--+"초");
sendEmptyMessageDelayed(1, 1000);
}
else if(second == 0) {
tv_time.setText("0초");
tv_answer.setText("게임이 종료되었습니다.");
intent = new Intent(MainActivity.this, MainActivity2.class);
intent.putExtra("answer", tv_count.getText().toString());
startActivityForResult(intent, 1);
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
tv_number = findViewById(R.id.tv_number);
tv_result = findViewById(R.id.tv_result);
tv_answer = findViewById(R.id.tv_answer);
tv_count = findViewById(R.id.tv_count);
tv_time = findViewById(R.id.tv_time);
btn_start = findViewById(R.id.btn_start);
btn_check = findViewById(R.id.btn_check);
btn_cancel = findViewById(R.id.btn_cancel);
btn_end = findViewById(R.id.btn_end);
btn_start.setOnClickListener(lis);
btn_check.setOnClickListener(lis);
btn_cancel.setOnClickListener(lis);
}
public void onClick1(View v) {
user_number = user_number + ((Button) v).getText().toString();
tv_result.append(((Button) v).getText().toString());
}
View.OnClickListener lis = new View.OnClickListener() {
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.btn_start) {
second = 60;
handler.sendEmptyMessage(1);
Toast.makeText(MainActivity.this, "게임을 시작합니다!", Toast.LENGTH_SHORT).show();
a = (int) (Math.random() * 9) + 1;
b = (int) (Math.random() * 9) + 1;
result = String.valueOf(a * b);
String number = a + "x" + b;
tv_number.setText(number);
} else if (id == R.id.btn_check) {
if (result.equals(user_number)) {
tv_answer.setText("");
tv_answer.append("정답입니다!");
count++;
tv_count.setText(String.valueOf(count));
user_number = "";
a = (int) (Math.random() * 9) + 1;
b = (int) (Math.random() * 9) + 1;
result = String.valueOf(a * b);
String number = a + "x" + b;
tv_number.setText(number);
tv_result.setText("");
} else {
tv_answer.setText("");
tv_answer.append("오답입니다.");
user_number = "";
}
} else if (id == R.id.btn_cancel) {
tv_result.setText("");
}
}
};
}
📝MainActivity2.java
package com.example.gugudangame;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.widget.TextView;
public class MainActivity2 extends AppCompatActivity {
int time = 3;
Intent intent;
String str;
TextView tv_main2;
Handler handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
intent = getIntent();
if(msg.what == 1) {
str = intent.getStringExtra("answer");
tv_main2 = findViewById(R.id.tv_main2);
tv_main2.setText("[ 게임 종료 ]\n총" + str + "개를 맞췄습니다!\n" +
"\n잠시후 메인 화면으로 돌아갑니다...\n\n" + time--);
sendEmptyMessageDelayed(1, 1000);
if(time == 0) {
Intent intent = new Intent(MainActivity2.this, MainActivity.class);
startActivityForResult(intent, 2);
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
handler.sendEmptyMessage(1);
}
}
728x90
반응형
'Project > Study | etc' 카테고리의 다른 글
8회 테코테코 (0) | 2024.11.10 |
---|---|
랜덤 숫자 게임 (0) | 2022.08.11 |
Team Project - 계산기 프로그램 (0) | 2022.07.01 |
상품 구매 프로그램 (0) | 2022.06.29 |
성적 관리 프로그램 + 설계, 메소드 구현 (0) | 2022.06.28 |
댓글