기금넷 공식사이트 - 복권 조회 - 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
}//클래스
}//네임 스페이스