Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 머신러닝
- MVCmodel
- ERD
- 오픈소스깃허브사용
- 1차프로젝트
- semantic_segmentation
- 하이퍼파라미터튜닝
- 스마트인재개발원
- 2차프로젝트
- 활성화함수
- 백엔드
- gitclone
- springSTS
- 선형모델 분류
- MSE
- 내일배움카드
- 국비지원
- 취업연계
- 손실함수
- 취업성공패키지
- randomForest
- 안드로이드
- 2차 실전프로젝트
- KNN모델
- 프로젝트
- 교차검증
- JSP/Servlet
- intent
- 비스포크시네마
- 크롤링
Archives
- Today
- Total
또자의 코딩교실
[스마트인재개발원] 주사위 게임 예제 만들기 본문
문제정의 : 버튼 클릭시, 주사위가 바뀌면서 점수를 올리는 App구현
기능)
1. 버튼을 클라하면 주사위 이미지를 랜덤으로 변경한다.
2. 주사위 눈을 비교하여 점수를 올린다. 단, 동일한 눈일 경우 점수를 올리지 않는다.
주사위를 던져 주사위 눈 수가 더 많은 쪽이 이기는 게임이다.
이벤트 처리 방식 3가지를 활용해 해보는 방법이다.
1. xml의 OnClick속성에 메소드 연결 -> 거의 사용하지 않는다.
2. interface를 class에 구현
- 같은 기능의 버튼이 여러 개 정의되어있는 경우 사용함. (상속만 하면 되니까)
3. interface를 익명 class로 정의하는 방법.
- 독립적으로 버튼의 기능을 구현해야 할 때 사용함.
앱 Layout 구성은 이렇게 했다.
public class MainActivity extends AppCompatActivity {
//이미지 배열 생성
int[] diceImgArr = {R.drawable.dice1, R.drawable.dice2, R.drawable.dice3, R.drawable.dice4, R.drawable.dice5, R.drawable.dice6};
//객체 정의
TextView a_dice;
TextView b_dice;
ImageView img_a_dice;
ImageView img_b_dice;
Button DiceChange;
int res_a=0; //a주사위 최종 출력 점수값
int res_b=0; //b주사위 최종 출력 점수값
int idx_a; //a주사위 난수 결과
int idx_b; //b주사위 난수 결과
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//findViewById의 역할만 담당하는 다른 메소드이다.
initView();
//DiceChange Button 누를 경우 수행하는 기능
DiceChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//애니메이션 설정
Animation anim = AnimationUtils.loadAnimation(MainActivity.this,R.anim.dice_shake);
img_a_dice.startAnimation(anim);
img_b_dice.startAnimation(anim);
//주사위 던지기 (난수)
Random random = new Random();
idx_a = random.nextInt(6);
idx_b = random.nextInt(6);
//이미지 설정
img_a_dice.setImageResource(diceImgArr[idx_a]);
img_b_dice.setImageResource(diceImgArr[idx_b]);
//주사위 난수 더하기
if(idx_a>idx_b) {
res_a++;
}else if(idx_a<idx_b){
res_b++;
}else {
/* Toast : HTML의 Alert과 비슷한 기능.
메인엑티비티화면의 정보를 매개변수로 넘기고(MainActivity.this)
무승부라는 글자를("무승부!")
짧게 띄울거에요.(Toast.LENGTH_SHORT)*/
Toast.makeText(MainActivity.this, "무승부!", Toast.LENGTH_SHORT).show();
}
//최종 바뀐 점수 셋팅. res_a와 res_b 는 int의 자료형이므로 valueOf를 통해 꼭 String형으로 바꿔주자.
a_dice.setText(String.valueOf(res_a));
b_dice.setText(String.valueOf(res_b));
}
});
}
//findViewById의 역할만 담당하는 다른 메소드이다.
private void initView() {
a_dice = findViewById(R.id.a_dice);
b_dice = findViewById(R.id.b_dice);
img_a_dice = findViewById(R.id.img_a_dice);
img_b_dice = findViewById(R.id.img_b_dice);
DiceChange = findViewById(R.id.DiceChange);
}
}
<!-- 사용할 수 있는 애니메이션 xml파일 -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/linear_interpolator"
android:duration="2000"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="1080"
/>
<scale
android:fromXScale="0.5" android:toXScale="0.85"
android:fromYScale="0.5" android:toYScale="0.85"
android:pivotX="50%" android:pivotY="50%"
android:duration="1000" />
<scale
android:fromXScale="0.85" android:toXScale="1.0"
android:fromYScale="0.85" android:toYScale="1.0"
android:pivotX="50%" android:pivotY="50%"
android:startOffset="1000"
android:duration="1000" />
</set>
'코딩공부 > Android' 카테고리의 다른 글
대충 생각하는 개인 프로젝트 스케치 (0) | 2022.04.16 |
---|---|
[스마트인재개발원] 이미지 슬라이드 앱 만들기 (0) | 2022.01.03 |
[스마트인재개발원] Constraint Layout에서 Chain 사용하기 (0) | 2022.01.03 |
[스마트인재개발원]Android - intent (0) | 2021.12.27 |
[스마트인재개발원] Android - 개요 (0) | 2021.12.24 |
Comments