반응형
이번에 안드로이드 배울겸 간단한 프로그램을 만들어 보기로 했다.
소프트웨어 장인을 읽어보면서 소소하게 취미삼아 만들면서 배워 나갈만한 것을 찾는 중에 간단하게 나마 안드로이드로 로또 번호를 생성하는 것을 먼저 만들어 보기로 했다.
최대한 로또가 진행되는 상황에 맞추어서 로직이 흘러가도록 구성을 하였다.
package com.hgjeon.lottogenerator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class NumberGenerator {
private Integer[] numbers = {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,32,33,34,35,36,37,38,39,40
,41,42,43,44,45};
/**
* 처음 45개의 숫자를 준비한다.
* @return
*/
public List getLottoNumberList (){
List lottoNumber = new ArrayList();
for(Integer number : numbers){
lottoNumber.add(number);
}
return lottoNumber;
}
/**
* 45개의 숫자가 게임함에 들어가면서 섞이게 된다.
* @return
*/
public List putInNumber(List lottoNumber){
Collections.shuffle(lottoNumber);
return lottoNumber;
}
/**
* 로또 게임을 진행한다.
* @return
*/
public List playGame(List lottoNumber){
List resultList = new ArrayList();
while(resultList.size() < 6){
Random random = new Random();
Collections.shuffle(lottoNumber); //숫자가 섞긴다.
int randomIdx = random.nextInt(lottoNumber.size());
if(random.nextBoolean()){ //추출된 숫자가 박스에서 나오는지에 대한 Random
resultList.add(lottoNumber.get(randomIdx));
lottoNumber.remove(randomIdx);
}
}
Collections.sort(resultList); // 결과값을 정렬
return resultList;
}
}
간단한 버튼을 만든 후 버튼을 클릭하면 로또 게임의 결과를 TextBox에 출력하게 해준다.
public class MainActivity extends AppCompatActivity {
private TextView textView;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.text1);
button = (Button)findViewById(R.id.button);
View.OnClickListener buttonCl = new View.OnClickListener() {
@Override
public void onClick(View v) {
NumberGenerator numberGenerator = new NumberGenerator();
List lottoNumberList = numberGenerator.getLottoNumberList();
List putInNumber = numberGenerator.putInNumber(lottoNumberList);
List resultNumber = numberGenerator.playGame(putInNumber);
textView.setText(resultNumber.toString());
}
};
button.setOnClickListener(buttonCl);
}
}
레이아웃 구성은 간단한 버튼과 텍스트뷰로 만든다.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="버튼을 눌러서 로또 번호를 만들어보세요."
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="Game Play"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
반응형
댓글