고스톱은 아니고 섯다 프로그램을 짜는 중인데요
지금 막 시작했어요 ..중간고사 대체 프로젝트가 있어서요.
근데 제가 시도하려는것은 1부터 10까지 각각 2장씩 20장을 4명의 플레이어가 2장씩 패를 받는데 이패는 랜덤으로 받아야 하잖아요.
그래서 20장의 이미지를 20개의 배열에 넣고 배열을 랜덤으로 받아오려고 하는데.. 그런 방법이 가능한가요? 방법좀 알려주세요
무작정 물어보기만 해서 죄송합니다.
제 생각엔 배열에 랜덤하게 직접 이미지를 넣는 방법보다,
(근데 위 방법으로 랜덥하게 이미지를 선택해야 한다는 문제가 발생하네요..)
랜덤하게 1~20까지의 수를 발생시켜서 각각의 수에 해당하는 패를 받게하면 될 것 같은데요..
예를 들면,
procedure TForm1.패돌리기(Sender: TObject);
var
I, J: Integer;
begin
Randomize;
// 랜덤하게 8개의 수들을 고르고,
for I := 0 to 7 do
배열[I] := Random(20);
// 8개 중에 반복되는 수가 있으면 자기자신을 다시 호출
for I := 0 to 6 do
begin
for J := I + 1 to 7 do
begin
if 배열[I] = 배열[J] then
패돌리기(Sender);
end;
end;
// 서로 다르게 나온 수 8개를 순서대로 각 네명에게 2개씩 부여하고
// 각 번호에 해당하는 이미지를 로드시키면 될 것 같은데요..
end;
procedure TForm1.Player1패받기(Sender: TObject);
begin
// Player1의 자리에 두개의 Image Component가 있고,
// 패 그림의 파일명이 XXX0.. XXX19라고 한다면,
// (물론 프로젝트가 저장된 폴더에 그림 파일도 같이 있어야겠죠..)
Image1.Picture.LoadFromFile('XXX' + IntToStr(배열[0]));
// 이렇게 하면 각각의 이미지 컴포넌트에 랜덤하게
// 패를 돌릴 수 있을 것 같네요..
end;
(근데 위 방법으로 랜덥하게 이미지를 선택해야 한다는 문제가 발생하네요..)
랜덤하게 1~20까지의 수를 발생시켜서 각각의 수에 해당하는 패를 받게하면 될 것 같은데요..
예를 들면,
procedure TForm1.패돌리기(Sender: TObject);
var
I, J: Integer;
begin
Randomize;
// 랜덤하게 8개의 수들을 고르고,
for I := 0 to 7 do
배열[I] := Random(20);
// 8개 중에 반복되는 수가 있으면 자기자신을 다시 호출
for I := 0 to 6 do
begin
for J := I + 1 to 7 do
begin
if 배열[I] = 배열[J] then
패돌리기(Sender);
end;
end;
// 서로 다르게 나온 수 8개를 순서대로 각 네명에게 2개씩 부여하고
// 각 번호에 해당하는 이미지를 로드시키면 될 것 같은데요..
end;
procedure TForm1.Player1패받기(Sender: TObject);
begin
// Player1의 자리에 두개의 Image Component가 있고,
// 패 그림의 파일명이 XXX0.. XXX19라고 한다면,
// (물론 프로젝트가 저장된 폴더에 그림 파일도 같이 있어야겠죠..)
Image1.Picture.LoadFromFile('XXX' + IntToStr(배열[0]));
// 이렇게 하면 각각의 이미지 컴포넌트에 랜덤하게
// 패를 돌릴 수 있을 것 같네요..
end;
이상 허접한 답변였습니다.. 즐코하시길!!!