ONEANDZERO Wiki
Login:
Password:
A well-known friend is a treasure.

사천성 #

C#과 XNA로 구현될 게임입니다.


진행상황 #

1/27일
C# 사용하기 : 세미나 과제(숫자 야구 게임)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
                    // 난수 생성을 위한 Random 클래스
            Random rand = new Random();

            int[] deck = new int[9];
            for (int i = 0; i < 9; i++)
            {
                deck[i] = i + 1;
            }

            // 2. 결과를 넣을 배열 생성
            int[] result = new int[3];

            // 3. 1~9까지의 숫자중 적당한 난수 2개를 뽑아
            // deck에서 해당 index의 숫자들의 자리를 바꿔줌
            // 이 작업을 적당히(?) 여러번 수행하면 끝
            for (int i = 0; i < 10; i++) // 적당히 10번
            {
                // 난수뽑기 방식2: 최대값을 넣으면
                // 0 <= x < [최대값]의 난수 얻을수 있음
                int num1 = rand.Next(9);
                // 난수뽑기 방식3: 최소값과 최대값을 넣으면
                // [최소값] <= x < [최대값]의 난수를 얻을수 있음
                int num2 = rand.Next(0, 9);

                // 얻어온 index대로 swap
                int temp = deck[num1];
                deck[num1] = deck[num2];
                deck[num2] = temp;
            }
         
            for (int i = 0; i < 3; i++)
            {
                result[i] = deck[i];
                Console.Out.Write(result[i]);//생성된 랜덤 세자리 숫자. 실제로 게임할때는 지워야! 
            }
            Console.Write("\n");
            
            int[] key = new int[3];

            int ball = 0;
            int strike = 0;

            while (strike != 3)
            {
                ball = 0;
                strike = 0;

                Console.WriteLine("수를 입력하세요:");//한번에 세자리 다 받을 수는 없을까요. 어레이리스트 같은거 써야해요?
                String num = Console.ReadLine();
                if (num.Length != 3)
                {
                    Console.WriteLine("3자리수를 입력해주세요");
                    continue;
                }

                key[0] = int.Parse(num[0].ToString());
                key[1] = int.Parse(num[1].ToString());
                key[2] = int.Parse(num[2].ToString());

                if (key.Contains<int>(0))
                {
                    Console.WriteLine("1~9사이의 숫자로만 입력해주세요");
                    continue;
                }

                if (key[0] == key[1] || key[1] == key[2] || key[2] == key[0])
                {
                    Console.WriteLine("서로 다른수를 입력해주세요");
                    continue;
                }

                for (int i = 0; i < 3; i++)//각 자리의 숫자가 같으면 스트라이크
                {
                    if (key[i] == result[i])
                        strike += 1;
                }

                for (int i = 0; i < 3; i++)//모든 숫자를 비교하여 (같은 횟수)-(스트라이크)수 하면 ball의 횟수
                {
                    for (int j = 0; j < 3; j++)
                        if (key[i] == result[j])
                            ball += 1;
                }

                Console.Write("ball:");
                Console.WriteLine(ball - strike);
                Console.Write("strike:");
                Console.WriteLine(strike);

                if (ball == 0 & strike - ball == 0)
                    Console.WriteLine("Out입니다ㅋㅋㅋㅋㅋㅋ");
            }
        }
    }
}

2/2
XNA 설치
XNA CREATORS CLUB ONLINE 가입
XNA 사용
와우 서버 분석

2/9
C# 예제 복소수 연산
클래스

본 게임 #


program.cs : game.run()게임을 실행하는 클래스
game2.cs : 게임 알고리즘 클래스
card.cs : 각각의 카드를 정의하는 클래스

그 외 클래스가 있지만 위의 3개가 기본입니다.

알고리즘
두 카드가 선택되었을 때 각 카드에서 가로줄 또는 세로줄을 그린다.
가로줄을 선택했다고 가정하자.
두 가로줄의 양 방향으로 부딪히지않고 지나갈 수 있는 최대값을 구한다.
두 가로줄의 최대값까지 겹치는 부분을 선택한다.
그리고 겹치는 부분에서 세로로 한 줄로 그을 수 있는 부분이 있으면
두 패는 제거가능한 패이다.

이 외 ㄱ형 이나 ㅣ형은 따로 쉽게 정의해준다.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-03-30 10:27:31
Processing time 0.0270 sec