기금넷 공식사이트 - 복권 조회 - C# 콘솔 입력을 쿼리하는 방법은 무엇입니까?

C# 콘솔 입력을 쿼리하는 방법은 무엇입니까?

소스 코드

주요 범주:

시스템 사용

네임스페이스 수

{

///< 요약>

///게스트 요약 설명.

///< /요약 >

학급 추측

{

색상 입력 색상 텍스트 = 새 색상 입력 (); //콘솔 색상 출력 클래스

개인 문자열 choose = null// 메뉴 선택

Privateint [] random = new int [4]; //무작위로 생성된 4 자리 숫자

Privateint [] guess = new int [4]; //사용자가 추측하는 4 자리 숫자를 저장합니다.

Private bool 또 = false// 새 게임을 시작하는 대신 게임을 계속하시겠습니까?

//시공 방법

대중의 추측 ()

{

}

//게임 시작에 대한 정보를 표시합니다.

유효하지 않은 게임 ()

{

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 파란색); //콘솔 출력 문자의 색상을 설정합니다.

콘솔。 Writeline(" \ t \ t \ t \ t 디지털 추측 게임 \ n \ n ");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 녹색);

콘솔。 쓰기 ("\ t 게임 설명: 게임 시작, 무작위로 생성된 네 자리 수를 맞춰야 합니다." "

+"숫자");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 빨간색);

콘솔。 쓰기 ("위치");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 녹색);

콘솔。 쓰기 ("및");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 빨간색);

콘솔。 Write ("size");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 녹색);

콘솔。 쓰기 ("너는 반드시 맞춰야 이길 수 있다. 복권과 비슷하지만 한 번에 한 장밖에 없습니다.);

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 빨간색);

콘솔。 쓰기 ("10");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 녹색);

콘솔。 쓰기 ("두 번째 기회 ~ ~! ! ! \ n ");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 보라색);

콘솔。 Writeline ("\ t \ t \ t \ t \ t \ t-by h _ q");

컬러 텍스트. SetTextColor((int) ColorInput). 전경. 흰색);

콘솔。 WriteLine(" \ t \ t \ t \ t \ t \ t 메뉴 (선택) ");

Console.writeline ("\ t \ t \ t1. Go”););

Console.writeline ("\ t \ t \ t 0. 종료);

Init ();

}//게임

Void 초기화 ()

{

= 콘솔을 선택합니다. Readline ();

//사용자의 선택 결정

그리고 (선택! = "0 ")

{

다음 경우 (선택). 같음 ("1"))

{

Initgame ();

깨뜨리다

}

// 10 회 때 게임을 계속할지 여부를 결정합니다.

다음 경우 (선택). 같음 ("2") & & amp 다시)

{

Input ();

다시 = 거짓;

}

기타

{

콘솔。 쓰기 ("게임 메뉴를 누르고 1 또는 0:");

= 콘솔을 선택합니다. Readline ();

계속;

}

}//때

} // Init ()

//게임 시작

Void InitGame ()

{

Randomr = new random ();

Intran = r.next (1000,9999); //임의 생성 4 자리 하한 1000 상한 9999.

//배열에 4 자리 숫자를 저장합니다.

For(int I = 3;; 나>= 0; 나-)

{

Random [I] = ran%10;

Ran/=10;

}

Input ();

} // InitGame ()

//사용자가 입력한 숫자 허용

잘못된 입력 ()

{

Intcount = 0; //사용자 추측 횟수를 기록하는 데 사용됩니다. 10 맞히면 졌다.

Bool isFormat = false

//입력한 기간이 올바르지 않은 경우 사용자 입력이 필요합니다.

하다

{

콘솔。 쓰기 ("네 자리 추측값 입력:" ");

문자열 inputNum = Console 입니다. Readline ();

//사용자 입력의 합법성을 확인합니다.

If (inputNum). 길이 == 4)

{

Intj = 0;

Foreach (char ch in inputNum)

{

만약 (Char). IsNumber(ch))

{

J++;+;

}

}

(j == 4) 인 경우

{

//정확한 입력을 추측 배열에 저장합니다.

For(int I = 0;; 나<4; I ++)

{

게스트 [I] = int. 해결 (inputNum). Substring(i,1);

}

Count++;+;

Isformat = compare (count);

}

기타

{

IsFormat = false

}

}

기타

{

IsFormat = false

}

} while(count & lt;; 10 입니다. & amp isformat = = false);

}//Input ()

//사용자가 추측한 숫자와 무작위로 생성된 숫자 사이의 위치와 각 숫자의 크기를 비교합니다.

부울 비교 (정수 개수)

{

String sameG = null// 등급이 매겨진 사용자의 추측을 식별하는 숫자.

String sameR = null// 동일하게 간주되는 임의 생성 수를 식별합니다.

Ints = 0; //사용자가 크기를 추측하는 자릿수를 식별합니다.

Int p = 0;; //사용자의 정확한 위치를 식별하는 데 사용되는 자릿수입니다.

//순차적 판단은 추측을 배제하는 데 사용됩니다.

For(int I = 0;; 나<4; I ++)

{

If (추측 [i] == 임의 [i])

{

P++;+;

S++;+;

SameG+= I;;

SameR+= I;;

}

}

//처음 맞힌 상황.

If(p = = 4 & amp;; & amps == 4)

{

Win ();

True 를 반환합니다

}

기타

{

For(int g = 0;; G<4; G ++)

{

For(int r = 0;; R<4; R ++)

{

//순서 비교에서 아무도 추측하지 않으면 sameG sameR 는 null 입니다.

//비어 있지 않으면 판단한 것은 모두 IndexOf 방법에 의해 제외되어 더 이상 비교할 필요가 없다.

//참고: IndexOf(string) 이 메서드는 문자열에서 같은 문자를 찾고, 찾을 수 없으면-1 을 반환합니다.

If (sameG == null || sameR == null ||

(sameR. Indexof (r.tostring ()) = =-1. & amp 샘거. Indexof (g.tostring ()) = =-1))

{

If (게스트 [g] = = random [r])

{

S++;+;

SameG+= g;;

SameR+= r;;

깨뜨리다

}

}

}

}

//10 회 안에 맞춰봐.

If(s = = 4 & amp;; & ampp == 4)

{

Win ();

True 를 반환합니다

}

기타

{

If(count & gt;; = 10)

{

Lost ();

True 를 반환합니다

}

기타

{

콘솔。 WriteLine ("맞힌 숫자의 수는 {0}, 맞힌 위치의 수는 {1}, 당신은 아직 {2} 개의 기회가 있습니다. \n", s, p,/kloc-;

False 를 반환합니다

}

}

}

} //Compare ()

//승리 ~

Void Win ()

{

컬러 텍스트. SetTextColor((int)ColorInput). 전경. 녹색);

콘솔。 Writeline ("\ t \ t \ t \ t \ t \ t \ t \ t \ t win \ n");

컬러 텍스트. Resetcolor (); //콘솔의 기본 출력 색상을 복원합니다.

콘솔。 WriteLine(" \ t \ t \ t \ t \ t \ t 메뉴 ");

Console.writeline ("\ t \ t \ t1. 새로운 게임);

콘솔。 WriteLine("\t\t\t\t0. 종료);

컬러 텍스트. SetTextColor((int)ColorInput). 전경. 흰색);

Init ();

}

//더욱 분발하다

잘못된 누락 ()

{

컬러 텍스트. SetTextColor((int)ColorInput). 전경. 빨간색);

콘솔。 WriteLine("\t\t\t\t 네가 졌다 ");

컬러 텍스트. Resetcolor ();

콘솔。 WriteLine(" \ t \ t \ t \ t \ t \ t 메뉴 ");

Console.writeline ("\ t \ t \ t1. 새로운 게임);

콘솔。 WriteLine("\t\t\t\t2. 계속);

콘솔。 WriteLine("\t\t\t\t0. 종료);

다시 = 참; //logo 는 임의 4 자리 숫자를 재생성하지 않고 계속됩니다.

컬러 텍스트. SetTextColor((int)ColorInput). 전경. 흰색);

Init ();

}

공용 정적 void Main(string[] args)

{

추측 게임 = 새로운 추측 ();

게임。 Game ();

}

}//클래스

}//네임 스페이스

콘솔 색상 출력 범주:

시스템 사용

시스템을 사용하다. Runtime. InteropServices

네임스페이스 수

{

//콘솔 출력의 색상을 변경할 수 있습니다.

공용 클래스 ColorInput

{

Private int hConsoleHandle

Private const int STD _ output _ handle =-11;

[DllImport("kernel32.dll")]

개인 정적 extern int getstdhandle (int nstd handle);

[DllImport("kernel32.dll")]

개인 정적 extern int setconsoletextattribute (int hconsoleoutput,

Intwatt attributes);

//시공 방법

공용 색상 입력 ()

{

Hconsolehandle = getstdhandle (STD _ output _ handle);

}

//직접 강조 색상을 시도합니다.

공개 열거 전망

{

녹색 = 10,

파란색,

빨간색,

보라색,

골드 스미스,

화이트 (성씨)

}

공용 void SetTextColor(int color)

{

Setconsoletextattribute (hconsolehandle, color);

}

Public void ResetColor ()

{

Setconsoletextattribute (hconsolehandle, 7);

}

}//클래스

}//네임 스페이스

Net 2003 C# 복잡한 콘솔 화면 정리 클래스

시스템 사용

시스템을 사용하다. Runtime. InteropServices

시스템을 사용하다. 텍스트;

네임스페이스 수

{

클래스 StdHandleEnum

{

공용 constint STD _ input _ handle =-10;

Public const int STD _ output _ handle =-11;

공용 constint STD _ error _ handle =-12;

}

//이 구조에는 화면 좌표가 포함되어 있습니다.

Cls 클래스

{

내부 구조 좌표

{

공단 x;

공공 짧은 y;

}

//화면 버퍼 정보

[StructLayout(LayoutKind). 순서, 팩 =1)]

내부 구조 콘솔 _ 화면 _ 버퍼 _ 정보

{

공통 좌표 크기

공용 좌표 p1;

짧은 a1;

짧은 w1;

공공 짧은 w2;

공공 짧은 w3;

공공 짧은 w4;

공용 좌표 m1;

}

/*

* Kernel32.dll 의 4 개 기능 부서.

*/

//모든 표준 입력/출력 핸들을 반환합니다.

[DllImport("kernel32.dll")]

Public static extern int getstdhandle (int nstd handle);

//콘솔 버퍼 정보를 반환합니다

[DllImport("kernel32.dll")]

Public static extern bool getconsolescreenbufferinfo (int hconsoleoutput, outconsole _ screen _ buffer _ info lpconsole

//커서를 놓습니다

[DllImport("kernel32.dll")]

Public static extern bool setconsolecursorposition (int hconsoleoutput, coord dwcursorposition);

//어떻게 번역해야 할지 모르겠어요

FillConsoleOutputCharacter () 를 사용하여 배치할 수 있습니다

//콘솔 화면의 모든 문자입니다. 공간 사용

//표시 영역 지우기.

[DllImport("kernel32.dll ",SetLastError=true, CharSet=CharSet. 자동)]

Public static extern bool fillconsoleoutputcharacter (int hconsoloutput, short cCharacter, int nLength, COORD WriteCoord)

[정적 스레드]

공용 정적 void Clear ()

{

//콘솔 화면에 대해 Windows 에 문의해야 합니다

//버퍼 설정.

콘솔 _ 화면 _ 버퍼 _ 정보 CSBI

//출력 장치의 핸들입니다.

Int hOut

//화면에 기록된 문자 수입니다.

Int CharOut

//주 커서 위치.

좌표 홈 페이지

//화면을 지웁니다.

//먼저 콘솔 화면의 핸들을 가져옵니다.

Hout = getstdhandle (stdhandleenum) 입니다. Std _ output _ handle);

//필요한 콘솔 화면 버퍼 정보를 가져옵니다.

Getconsolescreenbufferinfo (hout, out csbi);

//커서의 초기 위치를 설정합니다.

집에 가다. X = 0;;

집에 가다. Y = 0;;

//콘솔을 공백으로 채웁니다.

Fillconsoleoutputcharacter (hout,

(짧음) "",

CSBI 입니다. 사이즈. X * CSBI. 크기. Y,

집,

Out char out);

//커서를 왼쪽 위 구석에 놓습니다.

SetConsoleCursorPosition(hOut, home);

콘솔。 Writeline ("\ t \ t \ t \ t game on ~ \ n");

} // cls

}//클래스

}//네임 스페이스