Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5castle0] 백엔드 스프링 1주차 미션 제출합니다. #11

Open
wants to merge 37 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
748aa98
first todo.md
5castle0 Nov 18, 2024
111971f
character 인터페이스 및 클래스
5castle0 Nov 19, 2024
e2c92a5
change file name, add setName()
5castle0 Nov 19, 2024
d5bc384
arbitrary action class
5castle0 Nov 19, 2024
04430b9
game start
5castle0 Nov 19, 2024
7c5ea93
character constructor
5castle0 Nov 19, 2024
f327b7c
character getter + alive()
5castle0 Nov 19, 2024
c4c20bc
game setting
5castle0 Nov 19, 2024
182ef72
remove turnup
5castle0 Nov 19, 2024
94fd5a0
action
5castle0 Nov 19, 2024
182d38f
inTurn
5castle0 Nov 19, 2024
67559a1
game end
5castle0 Nov 19, 2024
08c3dfd
그때그때 새로운 함수값을 가져오도록 설정
5castle0 Nov 19, 2024
b73dec4
hp 감소 오류 수정
5castle0 Nov 19, 2024
350c3ec
mp 소모 구현
5castle0 Nov 20, 2024
898bade
스킬 데미지 수정
5castle0 Nov 20, 2024
2aa1b25
hit hard -> wait turn 구현
5castle0 Nov 20, 2024
03c1c74
skil mp check optimization
5castle0 Nov 22, 2024
92f5550
etc
5castle0 Nov 22, 2024
2692cda
명세에 맞게 수정
5castle0 Nov 28, 2024
67ac93e
apply code review -> rename
5castle0 Nov 28, 2024
574fe36
feedback -> file rename
5castle0 Dec 1, 2024
78310f7
spring boot dependency
5castle0 Dec 1, 2024
b173d87
character clear
5castle0 Dec 1, 2024
2e3c583
return character state
5castle0 Dec 1, 2024
ebb102b
available skill
5castle0 Dec 1, 2024
161c83a
use skill
5castle0 Dec 1, 2024
3206493
jpa, lombok, postgresql 의존성 추가
5castle0 Dec 26, 2024
d3d74f0
db 연결
5castle0 Dec 26, 2024
a619091
Job Enum 추가
5castle0 Dec 26, 2024
bfef0e6
db에 저장하기 위한 character entity
5castle0 Dec 26, 2024
4ce5c92
바뀐 명세에 따라 이름을 사용자가 지정하게 함
5castle0 Dec 26, 2024
fb5d2ca
characterDTO
5castle0 Dec 26, 2024
01b8a98
등록할 character를 받아 처리
5castle0 Dec 26, 2024
d602656
character를 db에 저장
5castle0 Dec 26, 2024
a67787a
level로 hp와 mp를 결정하게 함
5castle0 Dec 26, 2024
bf1045f
Merge branch 'GDSC-Hongik:main' into 5castle0
5castle0 Dec 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
# 턴제 게임

객체:
character(name, hp, mp)
action
turn(turn)

- character 기능 목록
1. action
2. lose hp
3. lose mp
- action 기능 목록
1. attack
2. defense
3. attack twice
4. attack three times
5. hit strongly
- turn 기능 목록
1. inTurn
11 changes: 11 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.6'
id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.gdsc'
Expand All @@ -18,6 +20,15 @@ repositories {
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.boot:spring-boot-starter' // 기본 스프링 부트 의존성
implementation 'org.springframework.boot:spring-boot-starter-web' // REST API 개발용
testImplementation 'org.springframework.boot:spring-boot-starter-test' // 테스트용
implementation 'com.fasterxml.jackson.core:jackson-databind'
implementation("org.springframework.boot:spring-boot-starter-data-jpa") //jpa 의존성
implementation group: 'org.postgresql', name: 'postgresql', version: '42.5.0' //postgresql
compileOnly 'org.projectlombok:lombok:1.18.36' //lombok
annotationProcessor 'org.projectlombok:lombok:1.18.36'
runtimeOnly 'org.postgresql:postgresql'
}

tasks.named('test') {
Expand Down
62 changes: 62 additions & 0 deletions src/main/java/com/gdsc/game/Action.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.gdsc.game;

interface interfaceAction{
int attack();
int defense();
int attack2(Character A);
int attack3(Character A);
int attackHard(Character A);
}

public class Action implements interfaceAction {

public void coolDown(Character A,Character B){ //skill5 한정
if(A.getSkill5Cool()>0){
A.setSkill5Cool(A.getSkill5Cool()-1);
}
if(B.getSkill5Cool()>0){
B.setSkill5Cool(B.getSkill5Cool()-1);
}

}

@Override
public int attack(){
int damage = (int)(Math.random() * 10) + 1;
System.out.println("#:"+ damage); //test용
return damage;
}

@Override
public int defense(){
int shield = (int)(Math.random() * 10) + 1;
System.out.println("#:"+ shield); //test용
return shield;

}

@Override
public int attack2(Character A){
int damage = 2*((int)(Math.random() * 10) + 1);
System.out.println("#:"+ damage); //test용
return damage;

}

@Override
public int attack3(Character A){
int damage = 3*((int)(Math.random() * 10) + 1);
System.out.println("#:"+ damage); //test용
return damage;

}

@Override
public int attackHard(Character A){
int damage = 5*((int)(Math.random() * 10) + 1);
System.out.println("#:"+ damage); //test용
return damage;

}
}

38 changes: 36 additions & 2 deletions src/main/java/com/gdsc/game/Application.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,43 @@
package com.gdsc.game;

public class Application {

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.Scanner;


@SpringBootApplication
public class Application{

public static void main(String[] args) {
System.out.println("hello world");
// System.out.println("write two character");

// Scanner sc = new Scanner(System.in);
// String input = sc.nextLine();

// String[] names = input.split(",");
// String name1 = names[0];
// String name2 = names[1];

SpringApplication.run(Application.class, args);

// String name1 = "knight";
// String name2 = "slime";
//
// Character A = new Character(name1);
// Character B = new Character(name2);
//
//// System.out.println("How many turns?");
//// int turn = sc.nextInt();
//
// int turn = 7;
//
Game runGame = new Game();
runGame.runGame();

// sc.close();

}

}
114 changes: 114 additions & 0 deletions src/main/java/com/gdsc/game/Character.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package com.gdsc.game;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

interface interfaceCharacter{

void setName(String name);
void losehp(int digit);
void losemp(int digit);
boolean alive();
}
@Entity
public class Character implements interfaceCharacter{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;
private int hp;

public void setHp(int hp) {
this.hp = hp;
}

public void setMp(int mp) {
this.mp = mp;
}

private int mp;

public String getJob() {
return job;
}

public void setJob(String job) {
this.job = job;
}

private String job;


public int getLevel() {
return level;
}

public void setLevel(int level) {
this.level = level;
}

private int level;

private int shield;

private int skill5Cool;

public int getSkill5Cool() {
return skill5Cool;
}

public void setSkill5Cool(int skillCool) {
this.skill5Cool = skillCool;
}



public int getShield() {
return shield;
}

public void setShield(int shield) {
this.shield = shield;
}

public Character(){
}

public int getHp() {
return hp;
}

public int getMp() {
return mp;
}

public String getName() {
return name;
}

@Override
public void setName(String name){
this.name = name;
}

@Override
public void losehp(int digit){
this.hp -= digit;
}

@Override
public void losemp(int digit) {
this.mp -= digit;
}

@Override
public boolean alive(){
if(this.hp>0) return true;
else return false;
}

}
17 changes: 17 additions & 0 deletions src/main/java/com/gdsc/game/CharacterDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.gdsc.game;

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.transaction.Transactional;
import org.springframework.stereotype.Repository;

@Repository
public class CharacterDAO {
@PersistenceContext
private EntityManager entityManager;

@Transactional
public void save(Character character) {
entityManager.persist(character); // 엔티티를 데이터베이스에 저장
}
}
20 changes: 20 additions & 0 deletions src/main/java/com/gdsc/game/CharacterDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.gdsc.game;

public class CharacterDTO {
private String name;
private String job;
private Integer level;

public String getName() {
return name;
}

public String getJob() {
return job;
}

public Integer getLevel() {
return level;
}

}
39 changes: 39 additions & 0 deletions src/main/java/com/gdsc/game/CharacterService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.gdsc.game;

import org.springframework.stereotype.Service;

@Service
public class CharacterService {
private final CharacterDAO characterDAO;

public CharacterService(CharacterDAO characterDAO) {
this.characterDAO = characterDAO;
}

public int getHpByJob(Job job) {
return job.getHp();
}

public int getMpByJob(Job job) {
return job.getMp();
}

public Character registerCharacter(String name, String job, int level) {
Character character = new Character();
character.setName(name);
character.setJob(job);
character.setLevel(level);

Job jobEnum = Job.valueOf(job.toUpperCase());
character.setJob(jobEnum.toString());

//기본 hp와 mp
character.setHp(getHpByJob(jobEnum)+level*10);
character.setMp(getMpByJob(jobEnum)+level*5);

//dao가 저장하게끔 함
characterDAO.save(character);

return character;
}
}
Loading