Coder Social home page Coder Social logo

connect_four's Introduction

Connect Four

어셈블리어로 구현한 입체사목 보드게임 프로젝트

프로젝트 설명

입체 사목 게임이라는 보드 게임을 어셈블리어로 구현한 프로그램이다. 게임 방식은 기존의 오목과 비슷하나 이 게임의 경우 사목판이 바닥과 수직으로 세워져 있기 때문에 원하는 세로줄의 맨 위에서부터 돌을 넣으면 해당 줄의 맨 아래칸부터 돌이 채워지게 된다. 이렇게 밑에서부터 돌을 쌓는 형식으로 진행이 되며 같은 색의 돌이 가로 / 세로 / 대각선으로 연속해서 4개가 놓여지게 되면 해당 돌의 플레이어가 승리한다.

구현 환경

  • 개발 환경 : Visual Studio
  • 언어 : Assembly language

프로젝트 Demo

C__Users_yjffl_Desktop_ASM_Project1_Debug_Project1 exe 2019-06-17 오후 5_58_10

상세 개발 과정

1. 사목판 구현
사목판의 각 칸은 x, y좌표값과 칸의 상태(비어 있는 경우 · 흑돌이 놓여진 경우 · 백돌이 놓여진 경우)를 가지고 있는 구조체로 구현된다.
2. 구조체 초기화
구조체로 구현된 사목판의 각 칸들을 초기화 해주는 Init 프로시저를 정의하여 사용하였다.
3. 사목판 화면 출력
사목판의 상태를 화면에 출력해주는 print 프로시저를 정의하여 사용하였다. 반복문을 이용하여 구조체 배열의 첫번째 구조체부터 x, y값을 dl, dh에 넣어준 뒤 call gotoxy 라이브러리 프로시저로 커서 이동 후 각 칸의 상태에 맞는 문자를 화면에 출력해주었다. 각 칸의 상태는 비어 있는 경우 X, 흑돌이 들어간 경우 ●, 백돌이 들어간 경우 ○로 출력된다.
4. 입력받은 위치에 돌 삽입
알맞은 위치에 돌을 삽입하는 inputStone 프로시저를 정의하여 사용하였다. 입력된 돌의 상태(흑돌 / 백돌)는 ebx에 들어있는 값으로 구분하며 위치값은 eax로 받는다.
5. 게임 종료
checkStone 프로시저를 사용하여 돌이 입력될 때마다 입력된 돌을 기준으로 주변 칸들의 상태를 검사하여 게임이 종료되는 경우를 판별하였다. 게임이 종료되는 경우는 사목판이 다 채워진 경우와 흑돌과 백돌이 각각 가로 · 세로 · 대각선(왼쪽위-오른쪽아래 방향 · 오른쪽위-왼쪽아래 방향)으로 연속해서 돌이 4개이상 놓여진 경우로 나누었으며 ecx에 저장된 카운터 값을 이용하여 판별한다. 사목판이 모두 채워져서 게임이 종료된 경우에는 플레이어에게 게임 재시작 여부를 물어보며 1을 입력 받으면 구조체 배열 초기화부터 시작해 main 프로시저를 다시 반복하여 주었고, 0을 입력 받으면 그대로 프로그램을 끝냈다.
6. main 프로시저
프로그램이 시작되면 먼저 구조체 배열을 초기화 해준 뒤 정해진 위치에 타이틀, 사목판, 차례, 위치입력 안내문을 출력하였다. 돌을 입력 받을 때마다 inputStone 프로시저와 checkStone 프로시저를 실행하여 게임 진행 상태를 판별하며 돌이 정상적으로 입력되고 게임이 끝나지 않은 경우 jmp를 이용하여 타이틀 출력부터 반복하여 주었다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.