스크래치는 알고리즘을 표현하기에 아주 좋은 툴이다.
이전에 작성한 고양이와 강아지의 즐거운 놀이를 JAVA로 옮겨보자.
1. 클래스를 생성한다.
public class CatAndDog {
}
2. 변수를 생성한다.
private static int catHp;
private static int dogHp;
3. 메인함수를 만들고 변수를 초기화, 순서를 정한다.
public static void main(String[] args) {
catHp = 30;
dogHp = 30;
order();
}
private static void order(){
int r = (int)(Math.random()*2 + 1);
if(r>1){
catAttack();
}else{
dogAttack();
}
}
4. 고양이와 강아지의 동작을 만든다. 졌다는 표현을 누가 하는지 알 수 없으므로, 누가 말하는지만 추가해 준다.
마지막에 상대방에게 순서를 넘긴다.
고양이:
private static void catAttack(){
if(catHp < 1){
System.out.println("고양이: 내가 졌소.");
}else{
int dmg = (int)(Math.random()*10 + 1);
dogHp += dmg * -1;
if(dmg > 5){
StringBuilder sb = new StringBuilder();
sb.append("회심의 일격! 강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다!!!");
System.out.println(sb.toString());
}else{
StringBuilder sb = new StringBuilder();
sb.append("강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다.");
System.out.println(sb.toString());
}
printStatus();
dogAttack();
}
}
강아지:
private static void dogAttack(){
if(dogHp < 1){
System.out.println("강아지: 내가 졌소.");
}else{
int dmg = (int)(Math.random()*10 + 1);
catHp += dmg * -1;
if(dmg > 5){
StringBuilder sb = new StringBuilder();
sb.append("회심의 일격! 강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다!!!");
System.out.println(sb.toString());
}else{
StringBuilder sb = new StringBuilder();
sb.append("강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다.");
System.out.println(sb.toString());
}
printStatus();
catAttack();
}
}
5. JAVA의 Console에는 현재 상황을 보여주는 화면이 없으므로 순서를 넘기기 전에 전반적으로 뿌려주는 부분을 만든다.
private static void printStatus(){
System.out.print("고양이의 남은 HP:");
System.out.print(catHp);
System.out.print(", 강아지의 남은 HP:");
System.out.println(dogHp);
}
6. 끝
전체 소스는 다음과 같다.
public class CatAndDog {
private static int catHp;
private static int dogHp;
public static void main(String[] args) {
catHp = 30;
dogHp = 30;
order();
}
private static void order(){
int r = (int)(Math.random()*2 + 1);
if(r>1){
catAttack();
}else{
dogAttack();
}
}
private static void catAttack(){
if(catHp < 1){
System.out.println("고양이: 내가 졌소.");
}else{
int dmg = (int)(Math.random()*10 + 1);
dogHp += dmg * -1;
if(dmg > 5){
StringBuilder sb = new StringBuilder();
sb.append("회심의 일격! 강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다!!!");
System.out.println(sb.toString());
}else{
StringBuilder sb = new StringBuilder();
sb.append("강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다.");
System.out.println(sb.toString());
}
printStatus();
dogAttack();
}
}
private static void dogAttack(){
if(dogHp < 1){
System.out.println("강아지: 내가 졌소.");
}else{
int dmg = (int)(Math.random()*10 + 1);
catHp += dmg * -1;
if(dmg > 5){
StringBuilder sb = new StringBuilder();
sb.append("회심의 일격! 강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다!!!");
System.out.println(sb.toString());
}else{
StringBuilder sb = new StringBuilder();
sb.append("강아지는 ");
sb.append(dmg);
sb.append("의 데미지를 입었다.");
System.out.println(sb.toString());
}
printStatus();
catAttack();
}
}
private static void printStatus(){
System.out.print("고양이의 남은 HP:");
System.out.print(catHp);
System.out.print(", 강아지의 남은 HP:");
System.out.println(dogHp);
}
}
실행시키면 다음과 같이 나온다.
강아지는 4의 데미지를 입었다.
고양이의 남은 HP:26, 강아지의 남은 HP:30
강아지는 2의 데미지를 입었다.
고양이의 남은 HP:26, 강아지의 남은 HP:28
회심의 일격! 강아지는 9의 데미지를 입었다!!!
고양이의 남은 HP:17, 강아지의 남은 HP:28
회심의 일격! 강아지는 10의 데미지를 입었다!!!
고양이의 남은 HP:17, 강아지의 남은 HP:18
회심의 일격! 강아지는 8의 데미지를 입었다!!!
고양이의 남은 HP:9, 강아지의 남은 HP:18
강아지는 4의 데미지를 입었다.
고양이의 남은 HP:9, 강아지의 남은 HP:14
회심의 일격! 강아지는 7의 데미지를 입었다!!!
고양이의 남은 HP:2, 강아지의 남은 HP:14
강아지는 2의 데미지를 입었다.
고양이의 남은 HP:2, 강아지의 남은 HP:12
강아지는 4의 데미지를 입었다.
고양이의 남은 HP:-2, 강아지의 남은 HP:12
고양이: 내가 졌소.
뻘짓 끝!
'일상' 카테고리의 다른 글
IQOS(아이코스) AS 후기 (0) | 2017.09.16 |
---|---|
Scratch - 가위바위보 하기 (0) | 2017.07.18 |
Scratch - 고양이와 강아지의 즐거운 놀이 (0) | 2017.07.05 |
Scratch - 카이사르 암/복호화 (0) | 2017.07.04 |
피클 만들기 (0) | 2017.07.04 |