- 파이썬을 이용해서 게임을 만들어보자!
The Game
- 게임 소개
A game of Ants Vs. SomeBees consists of a series of turns. In each turn, new bees may enter the ant colony. Then, new ants are placed to defend their colony. Finally, all insects (ants, then bees) take individual actions. Bees either try to move toward the end of the tunnel or sting ants in their way. Ants perform a different action depending on their type, such as collecting more food or throwing leaves at the bees. The game ends either when a bee reaches the end of the tunnel (you lose), the bees destroy the QueenAnt if it exists (you lose), or the entire bee fleet has been vanquished (you win).매 turn마다 새로운 꿀벌이 개미집단에 들어갈 수 있다.
새로운 개미를 배치해서 Colony를 방어한다.
모든 곤충은 개별 행동을 취한다.
꿀벌은 터널 끝으로 이동하거나 방해하는 개미를 쏜다.
개미는 그 종류에 따라 더 많은 음식 수집이나 꿀벌에게 나뭇잎 던지는 등과 같은 행동을 한다.
이 게임은 꿀벌이 터널 끝에 도달하거니(lose)
꿀벌 QueenAnt가 존재하면 이를 파괴하거나(lose)
전체 꿀벌이 정복되었을 때(win) 끝난다.
- 핵심 개념
The Colony: 게임이 일어나는 장소, 여러 개의 Places로 이루어진다. 터널로 서로 연결되어서 bee들이 그 속으로 travel할 수 있음.
colony는 ant를 터널에 넣기 위해 소비될 수 있는 적당량의 food가 있다.
Places: place는 터널에서 다른 place로 연결한다. player는 하나의 ant를 각각의 place에 넣을 수 있다. 하지만, 하나의 place에는 매우 많은 bee들이 있을 수 있다.
The Hive: bee들이 생성되는 곳. bee들은 ant colony에 들어가기 위해 beehive를 나간다
Ants: player는 colony에 선택가능한 종류중에 고른 ants를 위치한다. 각 개미의 종류는 서로다른 행동을 취하며 서로 다른 양의 colony food를 요구한다. 두개의 가장 기본적인 개미 종류는 HarvesterAnt(각 턴마다 colony에 1개의 food를 더함), ThrowerAnt(각 턴마다 bee에 leaf를 던짐)이고 나는 더 많이 구현할 것이다.
Bees: 게임에서 bee들은플레이어가 ant colony를 지키기 위해 방어해야 하는 적들이다. 매 턴마다 꿀벌은 방해되는 개미가 없으면 터널의 다음 장소로 이동하거나, 방해하는 개미를 쏜다. 적어도 한마리의 꿀벌이 터널 끝에 도달하면 꿀벌이 이긴다.
- 게임 레이아웃: 아래 사진은 GameState의 시각화이다. 앞으로 문제를 해결해 나가면서 이와 비슷한 다이어그램을 그리면서 이해하는걸 추천한다.
- 메인 클래스들
GameState: 게임에 관한 기본 정보들을 나타내는 클래스
Place: 곤충들 보관하는 한 장소. 한 place마다 최대1마리 ant가 있을 수 있고 bee는 한 장소에 여러마리 있을 수 있다. place객체는 왼쪽 향하는 exit랑 오른쪽 향하는 entrance가 있다. 이 두개는 place가 아니다.
bee는 place의 exit으로 이동하면서 터널 이동함
Hive: bee시작하는 곳
AntHomeBase: Ants가 방어하고 있는 곳, 벌들이 여기 오면 그들이 이김
Insect: ant랑 bee의 상위클래스, health속성(남은 health나타냄), place속성(지금 어느 곳에 있는지를 나타냄)을 가지고 있음. 각 턴마다 게임의 모든 active한 Insect는 그것의 특별한 action을 함.
damage 속성은 insect클래스의 클래스 속성이다
Ant: ants를 나타냄, 각 ant 서브클래스는 다른 종류들과 구분짓는 특별한 속성이나 action이 있다. ex) HarvesterAnt는 colony를 위해 food를 가져오고, ThrowerAnt는 Bee들을 공격한다.
각각의 ant종류는 한 종류의 ant의 한 유닛을 배치하는 데 얼마나 비용이 드는 지를 나타내는 food_cost속성을 가지고 있다.
ant 서브클래스의 damage속성은 클래스속성이다_이유: 같은 subclass의 모든 ants는 같은 damage를 받기 때문임
Bee: bee를 나타낸다. 각 턴마다 bee는 (만약 place가 ant에 의해 막혀 있지 않다면)현재 place의 exit으로 움직이거나 같은 place를 차지하고 있는 ants를 쏜다.
- 문제이해여부 질문
What do instances of Ant and instances of Bee have in common?
답: Ants and Bees both have the attributes health, damage, and place
and the methods reduce_health and action
'🏃♀️ 활동 > 프로젝트 작업일지' 카테고리의 다른 글
WeWish: K-Registry App (1) 프로젝트 시작 (0) | 2023.01.03 |
---|---|
Project: Ants vs SomeBees(2) (0) | 2022.07.26 |
Project 2: CS 61A Autocorrected Typing Software(1) (0) | 2022.07.11 |
Phase 3: Strategies of the Game (0) | 2022.07.07 |
Hog(2): Playing the Game (0) | 2022.07.07 |