일단 게임을 즐기기 위해서는 선행적으로 로그인/회원가입을 할 수 있어야 한다. 로그인/회원가입을 하기 위해서는 먼저 이 모든 유저들을 정의하는 User 클래스가 필요하다.
User 클래스
User 클래스의 객체인 user(사용자)는 id, pw, 회원번호, 보유 포켓몬, 나의 코인, 나의 뱃지, 배틀 칭호 현황으로 이루어져있다.
public class User{
String id;
String pw;
int unum;
String my_name;
String my_mon = null;
int my_coin = 100;
String my_badge = null;
String my_title = null;
User(){}
User(String id, String pw, int unum, String my_name){
this.id = id;
this.pw = pw;
this.unum = unum;
this.my_name = my_name;
}
User(String my_name, String my_mon, int my_coin, String my_badge, String my_title){
super();
this.my_name = my_name;
this.my_mon = my_mon;
this.my_coin = my_coin;
this.my_badge = my_badge;
this.my_title = my_title;
}
public String getId(){
return id;
}
public String getPw() {
return pw;
}
public String getMyName() {
return my_name;
}
public int getMyCoin() {
return my_coin;
}
public String getMyBadge() {
return my_badge;
}
public String getMyTitle() {
return my_title;
}
public String toString() {
return "ID:"+id+" PW:"+pw+" 회원번호:"+unum+", 닉네임:"+my_name;
}
}
로그인
자바로 로그인을 구현할 방식 : (접근하는 user의 아이디와 비밀번호).equals(ArrayList<User>users 리스트에 저장된 users.get(i)가 참조하는 아이디와 비밀번호)
user가 입력한 ID와 PW의 문자열이 users 리스트에 저장된 객체 중 하나가 참조하는 ID, PW 값이 동일하다면 로그인 된 것으로 확인한다.
class Login{
String id;
String pw;
String add_name;
Login(){}
Login(ArrayList<User>user){}
Login(String id, String pw){
this.id = id;
this.pw = pw;
}
public User loginSuccess(ArrayList<User>users) {
Scanner sc = new Scanner(System.in);
System.out.println("아이디를 입력해주세요");
System.out.println("ID : ");
String id = sc.next();
System.out.println("비밀번호를 입력해주세요");
System.out.println("PW : ");
String pw = sc.next();
User user = null;
for(int i=0;i<users.size();i++) {
if(users.get(i).getId().equals(id)) {
if(users.get(i).getPw().equals(pw)) {
user = users.get(i);
}
}
}
return user;
}
회원 가입
회원 가입 구현할 방식 : 사용자에게 Scanner를 통해 id, pw를 입력받아서 users 리스트에 저장한다. 회원 id, pw를 입력받아야 하고, 회원 번호를 가장 마지막 번호로 자동으로 지급한다. id, pw를 입력받은 후에는 닉네임을 정할 수 있는데, 마음에 들지 않으면 이전 단계로 돌아가 다시 입력을 받는다.
닉네임까지 모두 입력한 후에는 계정 생성이 완료되고 다시 로그인 화면으로 돌아간다. 조금 전 가입한 아이디와 비밀번호로 로그인이 가능하다.
public User addAccount(ArrayList<User>users) {
Scanner sc = new Scanner(System.in);
System.out.println("사용하실 아이디를 입력하세요");
String id = sc.next();
System.out.println("사용하실 비밀번호를 입력하세요");
String pw = sc.next();
System.out.println("사용하실 닉네임을 입력해주세요");
String my_name = "";
int unum = 0;
while(true) {
my_name = sc.next();
System.out.println("닉네임:"+my_name+"
정말로 이 닉네임을 사용하시겠습니까? (1:예/2:아니오)");
int rsp = sc.nextInt();
if(rsp==1) {
System.out.println("생성완료");
break;
}else if(rsp==2) {
System.out.println("사용하실 닉네임을 입력해주세요");
}else {
System.out.println("입력오류");
}
}
unum = users.size()+1;
User user = new User(id, pw, unum, my_name);
users.add(user);
return users.get(users.size()-1);
}
}
테스트 케이스
- 콘솔창에 입력/출력된 테스트 케이스
텍스트만 추출
포켓몬 세계에 오신 것을 환영합니다
계정을 보유하고 계신가요? (1:예/2:아니오)
1
아이디를 입력해주세요
ID : A
비밀번호를 입력해주세요
PW : A
입력하신 정보가 존재하지 않습니다
계정을 보유하고 계신가요? (1:예/2:아니오)
2
회원가입을 시작합니다
사용하실 아이디를 입력하세요
ID : A
사용하실 비밀번호를 입력하세요
PW : A
사용하실 닉네임을 입력해주세요
닉네임 : A
닉네임:A 정말로 이 닉네임을 사용하시겠습니까? (1:예/2:아니오)
2
사용하실 닉네임을 입력해주세요
A
닉네임:A 정말로 이 닉네임을 사용하시겠습니까? (1:예/2:아니오)
1
생성완료
[ID:A PW:A 회원번호:1, 닉네임:A]
계정을 보유하고 계신가요? (1:예/2:아니오)
1
아이디를 입력해주세요
ID : A
비밀번호를 입력해주세요
PW : A
A! 반갑네.
내 이름은 오박사. 포켓몬 트레이너들의 모험을 도와주고 있지.
아이디가 잘 등록되는 걸 확인할 수 있다. 그런데 한가지 오류가 있는데... 이 부분은 아직 어떻게 고쳐야할지 좀 생각해봐야 할 것 같다. 계정을 새로 생성하게 되면 리턴 값으로 유저의 [아이디, 패스워드, 회원번호, 닉네임]을 출력해준다. 그런데 이 기능은 유저가 2명 이상이 될때 전체 유저의 정보값을 같이 돌려준다는 오류가 있다.
포켓몬 세계에 오신 것을 환영합니다
계정을 보유하고 계신가요? (1:예/2:아니오)
2
회원가입을 시작합니다
사용하실 아이디를 입력하세요
ID : A
사용하실 비밀번호를 입력하세요
PW : A
사용하실 닉네임을 입력해주세요
닉네임 : A
닉네임:A 정말로 이 닉네임을 사용하시겠습니까? (1:예/2:아니오)
1
생성완료
[ID:A PW:A 회원번호:1, 닉네임:A]
계정을 보유하고 계신가요? (1:예/2:아니오)
2
회원가입을 시작합니다
사용하실 아이디를 입력하세요
ID : B
사용하실 비밀번호를 입력하세요
PW : B
사용하실 닉네임을 입력해주세요
닉네임 : B
닉네임:B 정말로 이 닉네임을 사용하시겠습니까? (1:예/2:아니오)
1
생성완료
[ID:A PW:A 회원번호:1, 닉네임:A, ID:B PW:B 회원번호:2, 닉네임:B]
이렇게... 회원 B를 등록했음에도 회원 A의 정보까지 같이 되돌아온다.
User user = new User(id, pw, unum, my_name);
users.add(user);
return users.get(users.size()-1);
users 리스트에서 users.size()-1 인덱스값을 가져오면 마지막에 추가된 계정만 보일거라고 생각했는데... 왜 이렇게 다같이 출력이 되는지 생각을 해봐야겠다.
'PROJECT > 포켓몬' 카테고리의 다른 글
[토이/자바] 포켓몬 게임 만들기(6-1) : 포켓몬 배틀 실행 (0) | 2024.04.19 |
---|---|
[토이/자바] 포켓몬 게임 만들기(6) : 포켓몬 (2) | 2024.04.19 |
[토이/자바] 포켓몬 게임 만들기(4) : 메인페이지 (0) | 2024.04.16 |
[토이/자바] 포켓몬 게임 만들기(3) : 입력데이터 (0) | 2024.04.16 |
[토이/자바] 포켓몬 게임 만들기(2) : 기획 (0) | 2024.04.15 |