Game List in Android Studio

Jiyeon Jeong·2021년 5월 21일
0

서론

본 프로그램은 Android Studio 기반으로 제작하였으며 앱을 선택할 시 게임 관련 정보가 리스트로 화면에 출력하게 된다. 여기서, 리스트의 Item을 선택하면 상세 정보 화면으로 넘어간다. 또한, 애플리케이션은 Kotlin을 기반으로 구현하였다.



전체 구성도

사용자가 앱을 실행하면 화면이 뜨게 되고, 데이터베이스에 저장되어 있는 정보를 애플리케이션에 전달하여 화면에 리스트가 출력되게끔 한다.


설계

Use Case


본 애플리케이션을 구현하기 전 간단하게 Use Case를 설계하였다. 앞서 Introduction의 확인할 수 있듯이 초기 앱 화면이 스플래시로 지나가게 되고 초기 화면이 지나면 기본적으로 비디오 게임 리스트가 출력된다. 이후로 온라인, 모바일 리스트를 선택할 수 있다. 세 가지 종류의 게임 중 하나를 선택하게 되면 그 종류와 관련된 게임의 리스트가 화면에 출력된다. 그리고 각 리스트 중 게임을 하나 선택하면 그 게임에 관한 상세 정보 화면으로 넘어가게 된다.


DB Design

게임 정보를 저장하기 위한 데이터베이스가 필요하다. 정보 저장할 테이블을 생성하고 그 안에 데이터를 저장하였다. 데이터베이스는 MariaDB를 사용하였다.

1. 게임엔진 Table

create table gameEngine (
    engine_id int(11) not null auto_increment, --게임 엔진 고유 번호
    engine_name varchar(50) not null, --게임 엔진의 이름 
    release_date varchar(50) default null, --게임 엔진의 출시 날짜
    programming_language varchar(50) default null, --프로그래밍 언어
    image varchar(255) default null, -- 게임 엔진의 로고
    primary key(engine_id)
) engine=InnoDB;

✔ Describe Table

개발된 게임의 엔진을 저장하는 데이터베이스 테이블이다. 위의 코드를 확인해보면 고유 번호와 게임 엔진의 이름, 출시날짜, 프로그래밍 언어 및 로고가 저장되는 것을 확인할 수 있다. 이름을 제외하고 모두 Null이 들어가도 된다.


2. 게임회사 Table

create table gameCompany (
    company_id int(11) not null auto_increment, --게임 회사 고유 번호
    company_name varchar(50) not null, --게임 회사의 이름
    location varchar(50)  default null, --게임 회사 위치
    establishment_date varchar(50) default null, --게임 회사 설립 날짜
    image varchar(255) default null, --게임 회사의 로고
    primary key(company_id)
) engine=InnoDB;

✔ Describe Table

개발된 게임의 회사를 저장하는 데이터베이스 테이블이다. 위의 코드를 확인해보면 게임 회사의 고유번호와 회사의 이름, 위치, 설립날짜 및 회사의 로고가 저장되는 것을 확인할 수 있다. 1번의 엔진 테이블과 동일하게 이름을 제외하고 데이터를 필수로 입력할 필요가 없다.


3. 게임이름 Table

create table gameName (
    name_id int(11) not null auto_increment, --게임의 고유번호
    name varchar(50) not null, --게임 이름
    genre varchar(50), --게임의 장르
    engine_id int(11), --게임 개발 엔진 ID
    company_id int(11), --게임 개발 회사 ID
    release_year int(11), --게임 출시 날짜
    platform1 varchar(50), --게임 출시 플랫폼1
    platform2 varchar(50), --게임 출시 플랫폼2
    platform3 varchar(50), --게임 출시 플랫폼3
    game_id int(11), --게임 종류 구분(비디오, 온라인, 모바일)
    introduction varchar(2500), --게임 소개
    image varchar(255), --게임의 이미지 
    primary key(name_id),
    foreign key(engine_id) references gameEngine(engine_id) on update cascade,
    foreign key(company_id) references gameCompany(company_id) on update cascade
) engine=InnoDB;

✔ Describe Table

마지막으로 게임의 정보가 담겨있는 데이터베이스 테이블이다. 위의 코드를 확인해보면 게임의 고유번호와 게임의 이름, 장르, 개발 게임 엔진의 ID와 개발 회사의 ID, 게임 출시날짜, 플랫폼 3가지와 종류구분, 그리고 간단한 게임 소개와 게임의 이미지가 저장된다. 데이터를 저장할때 앞서 1,2번과 동일하게 이름을 제외하고 정보를 저장할 필요가 없다.



구현

1. 초기화면

초기화면은 애플리케이션을 실행시켰을 때 뜨는 화면이다.

앱을 실행시키면 위의 사진처럼 아이콘과 글이 뜨게되고 약 1초정도 지나면 메인 화면으로 넘어간다.


2. 메인 화면

메인 화면이자, 하단의 네비게이션에 "Video Game"을 선택할 때도 출력되는 리스트 화면이다. 화면은 아래의 사진에서 확인할 수 있다.

스크롤을 통해 리스트를 확인할 수 있으며, CardView를 통해 리스트의 Item을 생성하였다.

게임 Item 하나를 확인해보면 큰 글자인 상단에는 게임의 이름, 그리고 중간에는 게임의 장르, 하단에는 게임 회사와 괄호 안에는 개발된 게임의 엔진이 기재되어 있다. 여기서 "기타"는 회사 자체적으로 만든 엔진을 사용했거나, 정보가 존재하지 않을 때 기타로 판정하여 출력되게끔 하였다. Item의 배경은 모두 흰색으로 지정하였다.

3. "Online Game" 선택 화면

하단의 네비게이션에 "Online Game"을 선택할 때 출력되는 리스트 화면이다.

메인 화면과 동일하게 스크롤을 통해 리스트를 확인할 수 있다. 구현 사항은 메인 화면과 동일하다. 구현 과정은 ViewModel을 생성해 정보를 저장한 후 Fragment에 ViewModel을 생성하여 사용한다. 리스트 Item의 정보는 메인 화면과 동일하게 뜨는 것을 확인할 수 있다.

4. "Mobile Game" 선택 화면

하단의 네비게이션에 "Mobile Game"을 선택할 때 출력되는 리스트 화면이다.

모바일 게임 리스트도 메인, 온라인 게임과 동일하게 스크롤을 통해 리스트를 확인할 수 있다. 구현 사항 또한 메인, 온라인 화면과 동일하다. 모든 리스트의 Item은 RecyclerView를 통해 생성하였다.

5. 게임 상세 정보 화면

각 게임 리스트에서 Item을 선택하면 출력되는 화면이다.

온라인, 모바일, 비디오 게임 모두 상세 페이지는 동일하다. Item을 클릭하면 위의 사진과 동일하게 화면이 뜨게되고, 사진 안에 상단부터 게임의 사진, 게임의 이름, 장르, 개발 회사, 출시연도 등 상세 정보가 출력되고 마지막엔 게임 소개가 간단하게 출력된다. 일반 Layout을 사용하면 화면이 크지 않을 때 아래 정보들이 잘리므로, ScrollView를 이용해 스크롤을 사용할 수 있게 구현하였다.

6. 서버

서버는 node.js를 사용하였다. node.js에서 DB를 받아와 URL을 통해 데이터를 저장하게끔 진행하였다. 데이터는 JSON 형식으로 저장됨을 아래의 사진에서 확인할 수 있다.

✔ 게임 이름 JSON

✔ 게임 회사 JSON

✔ 게임 엔진 JSON

✔ 앱 리스트에 출력될 정보 JSON



7. 앱 아이콘


애플리케이션을 설치했을 때, 기본 Android Studio 이미지가 뜨므로 이를 조이스틱으로 변경해주었다. 휴대폰에 앱을 설치할 시 위와 같이 뜨게 된다.



결론

본 게시글에서는 게임을 주제로 DB와 Android Studio를 이용해 간단한 앱을 제작하는 것이 목적이었다. 애플리케이션 코드는 Github Android Game List에서 확인할 수 있고, 서버 코드는 Github Android Game List Server에서 확인할 수 있다.

profile
기록용입니다.

0개의 댓글