C# 콘솔 & 윈도우폼6 [C#] 콘솔창으로 만드는 텍스트RPG 개요 콘솔창으로 텍스트 RPG를 구현한다. 화면 좌측 상단에는 플레이어의 정보가 나오며, 맵은 좌측상단에서 시작하여 우측하단으로 탈출하는 구조이다. 각 타일은 위험도에 따라 안전 - 초록색 / 보통 - 흰색 / 위험 - 노란색 으로 나누어진다. 위험도가 높을수록 더 강한 몬스터가 등장하며, 몬스터와는 홀,짝 대결을 하여 전투한다. 상점은 맵을 4분할 한 위치에 랜덤하게 각각 1개씩 생성되며, 물약을 구매할 수 있다. 게임화면은 30 프레임의 주기로 업데이트 된다. 제작 소요시간 : 5시간 내외 로직 매 프레임마다 화면을 새로 그려줄 것이다. 따라서 프레임 주기를 측정할 계산이 필요하다. const float waitTick = 1000 / 30; // Frame Rate long lastTick = 0;.. 2022. 7. 14. [C#] 숫자야구 게임 구현하기 숫자야구란? 사용되는 숫자는 0에서 9까지 서로 다른 숫자이다. 경우에 따라 0은 사용하지 않기도 한다. 숫자는 맞지만 위치가 틀렸을 때는 볼. 숫자와 위치가 전부 맞으면 스트라이크. 숫자와 위치가 전부 틀리면 아웃. "틀렸다"는 게 중요하다. 의외로 아웃이 제일 좋은 수인데, 틀린 숫자만 제끼고 남은 숫자끼리 조합하면 되므로 경우의 수가 팍팍 줄어들기 때문. 볼, 스트라이크는 숫자는 맞는 게 있으나 무슨 숫자가 맞았는지를 알 수가 없어 경우의 수를 더 생각해봐야 하지만 아웃은 틀린 숫자만 제거한 나머지만 생각해보면 어렵지 않기 때문. 2아웃이 나오면 더욱 좋다. 작정하고 숫자 예측을 이상하게 하지 않는 이상 3아웃 이상은 절대로 나오지 않는다. 물론 무엇이 볼이고 스트라이크인지는 알려주지 않는다. 두 .. 2022. 7. 5. [C# Window Form] 윈도우 폼으로 슈팅게임 구현하기 4 : 갤러그 의의 그동안 3편까지는 콘솔로 했었다면, 이번에는 Window Form형태로 도전해 볼 것이다. Window Form을 사용하면서 좀 더 2차원적인 그래픽 표현 능력이 향상되다보니 더 게임다운 모습을 하게 된다. 콘솔로 그래픽을 문자로 표현하면서 노가다 적인 부분들이 있는데, 그 부분들이 많이 개선되겠지만, 윈폼을 쓰면서 오히려 더 신경써야할 부분들도 생기는 것 같다. 리소스는 캐릭터는 유니티 에셋스토어를 활용하였고, >> Pixel Art Starships Package - Terran Fleet | 2D Textures & Materials | Unity Asset Store Pixel Art Starships Package - Terran Fleet | 2D 텍스처 및 소재 | Unity Asset.. 2022. 7. 2. [C#] 콘솔로 슈팅게임 구현하기 3 : 갤러그 개선점 2편에서는 10프레임 단위로 화면을 갱신하며 1편에 비해 매우 정상적인 플레이가 가능하였다. 하지만, 높은 프레임으로 올라갈수록 콘솔을 지우고 쓰는 속도가 빨라져, 화면 깜빡임이 매우 심해졌다. 따라서 이를 해결함과 동시에, 총알이 세 갈래로 나아가는 것도 구현했다. 또한 메인화면, 게임 종료 시 화면도 구현하였다. 전체 코드 는 생략. 코드를 다양한 스크립트로 분할하면서 여러 스크립트가 되었기에 전체코드는 생략한다. 크게 변경된 부분 코드만 적어보겠다. 로비구현 MainGame.cs const int waitTick = 1000 / 60; // 60 프레임(60FPS) static void Main(string[] args) { int lastTick = 0; // 마지막 틱 int curren.. 2022. 7. 2. [C#] 콘솔로 슈팅게임 구현하기 2 : 갤러그 의의 콘솔로만 구현하는 C#기반 슈팅게임 구현 개선점 1. 1편의 문제점은 키 입력이 존재하지 않으면, 화면이 갱신되지 않는다는 것이었다. 이 부분은 키의 입력이 존재하지 않더라도 실행이 가능하도록 Console.KeyAvailable 을 활용하여 해결하였다. if (Console.KeyAvailable == true) // 키입력이 존재한다면 2. 키 입력 문제가 해결되었으니, 적의 움직임, 총알의 움직임, 플레이어의 움직임을 매 프레임마다 계산하여 동시에 표현할 수 있게 되었다. 프레임을 구하는 원리는 다음을 사용하였다. const int waitTick = 1000 / 10; int currentTick; int lastTick = 0; while (true)// 반복 { // 현재 시간 curre.. 2022. 7. 1. [C#] 콘솔 창으로 슈팅게임 구현하기 1 : 갤러그 의의 콘솔 앱을 제작하여, 콘솔 창으로만 동작하는 간단한 슈팅게임을 만들어보고자 한다. 조건 1. 플레이어는 키보드 방향키를 입력받아 좌, 우로 움직일 수 있다. 2. 적 플레이어는 임의로 지정한 방식에 따라 좌, 우로 움직인다. 3. 스페이스 바를 입력하여 총알을 발사할 수 있다. 4. 총알과 적 플레이어가 충돌 시 총알은 사라진다. 5. 총알은 시야에서 벗어나도 사라진다. 6. 총알이 적에게 명중하면 100점을 획득하며 화면에 좌측 상단에 출력한다. 구현 전체 코드 Program.cs using System; using System.Runtime.InteropServices; using System.Windows.Input; using System.Threading.Tasks; using System.. 2022. 6. 30. 이전 1 다음