턴제 멀티플레이어 맥주 게임
가까운 미래에 시스템 사고 워크숍을 조직해야 하기 때문에 시작하려면 맥주 게임이 필요합니다.
맥주 게임 자체는 소매점, 도매점, 유통점, 공장의 네 가지 캐릭터로 구성됩니다. 물류의 시간 지연 특성을 통해 시스템 관점을 이해하고 시스템 경계를 더 잘 이해할 수 있습니다.
몇 시간짜리 워크숍이므로 이 맥주 게임이 다음 기능을 충족하길 바랍니다.
멀티플레이어 게임입니다.
맥주 게임 자체에는 공급망에서 다양한 역할을 수행하는 많은 참가자가 있지만, 여러 공급망이 동시에 경쟁하여 누가 더 높은 점수를 얻을 수 있었으면 좋겠습니다. 따라서 이들의 시스템 전략을 동시에 배울 수 있습니다.
게임 진행자는 모든 사람의 상태를 볼 수 있어야 합니다.
동시에 경쟁하는 여러 팀이 있기 때문에 호스트로서 현재 각 팀의 진행 상황과 득점 상황을 확인할 수 있어야 합니다.
게임 흐름이 단순하고 속도 조절이 쉬워야 합니다.
처음에 말했듯이 이번 워크숍은 짧은 워크숍이기 때문에 모두가 빠르게 적응할 수 있어야 하고 각 라운드의 세부 사항을 제어할 수 있어야 합니다.
또한 각 라운드가 시작될 때 플레이어 UI에 타이머가 나타나 카운트다운을 통해 게임 속도를 높입니다.
캐릭터를 맞춤 설정할 수 있습니다.
클래식 맥주 게임은 4명의 캐릭터로 구성되는데, 캐릭터가 많을수록 게임 시간이 길어집니다. 그래서 3명의 캐릭터가 있는 것이 더 나을 수 있도록 게임 템포를 조정하고 싶습니다.
검색해 본 결과, 오픈소스 프로젝트나 이미 온라인에 있는 프로젝트 모두 이러한 요구 사항을 완벽하게 충족할 수 없다는 것을 알았습니다. 그럼 제가 직접 만들어 보는 게 좋을 것 같아요.
맥주 게임 프로젝트
https://github.com/wirelessr/beer_game
호스트 UI
플레이어 UI
전체 프로젝트는 비즈니스 중심으로 개발되었으며 90% 이상의 커버리지로 테스트되었으므로 자유롭게 사용하시기 바랍니다.
대비
프로젝트 폴더에 비밀을 위한 파일을 만듭니다. Dockerfile에 복사하는 모습을 보실 수 있습니다.
.streamlit/secrets.toml
[mongo] uri = "<your mongo connection>" [admin] key = "<your admin key>" [player] key = "<your player key>"
본 프로젝트는 MongoDB를 사용하기 때문에 링크에 계정 비밀번호를 입력해야 합니다. 또한 admin.key 및 player.key는 UI의 주요 필드에 해당합니다.
결국 퍼블릭 클라우드에 앱을 업로드하는 중이기 때문에 기본적인 인증 메커니즘은 여전히 필요합니다. 로컬에서만 실행 중이고 인증이 번거롭다면 해당 소스코드를 제거하면 됩니다.
설치 및 사용
이 프로젝트에는 Dockerfile이 첨부되어 있어 docker로 직접 실행할 수 있습니다.
docker build -t beer_game . docker run --rm --name beer -p 8501:8501 beer_game
개발을 위해서는 requiremnts.txt 외에 단위 테스트를 실행하는 요구사항-test.txt도 설치해야 합니다. 그런 다음 Makefile을 통해 모든 단위 테스트를 실행할 수 있습니다.
pip install -r requiremnts.txt pip install -r requirements-test.txt make test
게임 흐름
전체 게임은 UI 상단의 옵션에 해당하는 호스트 모드와 참가자 모드로 구분됩니다.
호스트는 게임을 생성하기 위해 먼저 game_id를 할당하고, 모든 참가자는 이 ID로 player_game을 채워야 합니다.
동일한 공급망에 있는 모든 플레이어는 동일한 player_id를 사용해야 하므로 이 ID를 공급망 ID라고도 하며 동일한 player_id를 가진 참가자는 player_role에 따라 역할로 구분됩니다.
참가자가 참여하면 호스트 화면에서 진행 상황을 확인할 수 있습니다.
진행자의 관점에서 전체 반복이 어떤 모습일지 살펴보겠습니다.
조작해야 할 구성품은 모두 이 사진에 있고, 각 턴은 새로고침 버튼을 누르면 시작되고 다음주를 누르면 끝납니다.
이번 라운드에서 모든 공급망에 보낼 주문 수는 Place Order에 의해 실행됩니다.
Place Order 자체는 멱등원이므로 숫자를 변경하고 다시 눌러도 괜찮습니다. 마지막 숫자가 사용됩니다. 각 참가자 인터페이스의 Place Order도 멱등성을 갖습니다.
호스트가 주문을 완료하면 상점 플레이어가 주문을 받을 수 있습니다.
마찬가지로 공급망의 각 역할은 새로 고침으로 시작하여 주문하기로 끝나며 상점 플레이어가 작업을 수행하고 소매업체 플레이어가 이어지는 방식으로 진행됩니다.
마지막으로 새로 고침을 다시 눌러 라운드의 모든 상태를 확인하고 다음 주에 라운드를 종료할 수 있는 호스트로 돌아갑니다.
게임 세부정보
새로 고침 중에는 실제로 수행되는 몇 가지 작업이 있습니다.
- 4주 전에 접수된 주문을 기준으로 다운스트림에서 재고를 다시 채웁니다.
- 업스트림에서 주문을 받습니다.
- 판매할 수 있는 인벤토리에 따라 판매 금액을 결정합니다.
Place Order가 멱등성이 있으므로 Refresh 자체도 멱등성을 갖습니다.
미래의 일
기본적으로 현재 내 요구사항을 모두 충족하지만 몇 가지 개선할 사항도 있습니다.
예를 들어 호스트는 모든 참가자의 상태를 볼 수 있지만, 시간에 따른 인벤토리 및 비용 정보의 변화를 그래프로 표시하면 게임이 끝난 후 검토하는 데 도움이 될 것입니다. .
더 기본적인 문제도 있습니다. 현재 UI에는 테스트 적용 범위가 전혀 없습니다. 주로 현재 게임 흐름이 매우 단순하기 때문입니다. UI를 몇 번만 클릭하면 모든 UI 흐름이 처리되므로 자동 테스트에 크게 의존하지 않습니다. 다만, UI 수정이 있다면 그래도 좀 지루할 수 있으니 UI 단위 테스트를 해보시는 게 좋을 것 같습니다.
전반적으로 이러한 요구 사항은 최적화이지만 그 부족이 기능에 영향을 미치지는 않습니다.
추가 아이디어가 있는 경우 끌어오기 요청을 제출해도 됩니다. 참여도 환영합니다.
위 내용은 턴제 멀티플레이어 맥주 게임의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.
