Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

오목프로그램

c언어 팀프로젝트 1조과제
by

seoung woo ji

on 10 December 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 오목프로그램

#include<stdio.h>
void menu(){ //메뉴
printf("1.게임방법\n");
printf("2.게임실행\n");
printf("메뉴를 선택하세요 : ");

}

void first(){ //게임방법

printf("☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("★ 가로,세로,대각선으로 먼저 ☆\n");
printf("☆ 5개의 돌을 놓는 사람이 ★\n");
printf("★ 승리하는 게임입니다 ☆\n");
printf("☆★☆★☆★☆★☆★☆★☆★☆★\n");


}

void pan(int a[21][21]){ //오목판
int i,j;
printf("\n");
for(i=0;i<21;i++){ //판의 행,열 번호 자리수에 따라 띄어쓰기
if(i<10)
printf(" %d",i);
else
printf("%d",i);
}
printf("\n");
for(i=1;i<21;i++){
printf("%2d",i); //2칸을 잡아 자리수에 따라 판 쪼개짐X
for(j=1;j<21;j++){
if(a[i][j]==0) printf("┼");
else if(a[i][j]>0) printf("●");
else printf("○");
}

printf("\n");
}


}
int win(int a[21][21])
{
int line,c=0,d=0,e=0,f=0;
int i,j;
//세로확인
for(i=1;i<=16;i++){
for(j=0;j<21;j++){
line = a[i][j]+a[i+1][j]+a[i+2][j]+a[i+3][j]+a[i+4][j];
if(line==5)
{
c=1;
}
else if(line==-5)
{
c=-1;
}
}
}
//가로확인
for(i=0;i<21;i++){
for(j=1;j<=16;j++){
line = a[i][j]+a[i][j+1]+a[i][j+2]+a[i][j+3]+a[i][j+4];
if(line==5)
{
d=1;
}
else if(line==-5)
{
d=-1;
}
}
}
//대각선1확인
for(i=0;i<21;i++){
for(j=1;j<=16;j++){
line = a[i][j]+a[i+1][j-1]+a[i+2][j-2]+a[i+3][j-3]+a[i+4][j-4];
if(line==5)
{
e=1;
}
else if(line==-5)
{
e=-1;
}
}
}
//대각선2확인
for(i=1;i<=16;i++){
for(j=5;j<=20;j++){
line = a[i][j]+a[i-1][j+1]+a[i-2][j+2]+a[i-3][j+3]+a[i-4][j+4];
if(line==5)
{
f=1;
}
else if(line==-5)
{
f=-1;
}
}
}
if(c == 1 || d == 1 || e== 1 || f ==1)
return 1;
else if(c==-1 || d == -1 || e== -1 || f==-1)
return -1;
else
return 0;
}


int main()
{
int a,b;//좌표

int c=0,i;// 메뉴받기
int aa[21][21]={{0}};

int player=0;
int winn;


return1 :
menu();
scanf("%d",&c);

switch(c){
case 1:
first();
printf("\n");
printf("5초뒤에 게임이 시작됩니다.");
for( i=0; i<2500000000; i++); //딜레이
break;
case 2:

printf("\n");
break;

default :
printf("잘못된 선택입니다.\n");
printf("1 또는 2를 입력해주세요\n");
goto return1;
break;
}




pan(aa);


while(1) //게임을 진행, 빠져나가면 게임 win
{
while(player==0) //흑돌 차례
{

printf("흑돌의 차례입니다.\n(세로 가로)입력바랍니다:");
scanf("%d %d",&a,&b);
if(a<1||b<1||a>20||b>20)
{
printf("범위가 아닙니다.다시 놓아주세요");
pan(aa);
continue;
}
if(aa[a][b]==0)
{
aa[a][b]=1;
player++;

pan(aa);
}

else
{
printf("★이미 놓여져 있습니다. 다른곳에 놓아주세요\n");
pan(aa);
continue;
}

} //흑돌 차례 끝
winn=win(aa); //흑돌 승리조건 검사
if(winn==1){
printf("흑이 승리하였습니다.");
goto gamewin;
}
while(player==1) //백돌 차례
{
printf("백돌의 차례입니다.\n(세로 가로)입력바랍니다:");
scanf("%d %d",&a,&b);
if(a<1||b<1||a>20||b>20)
{
printf("범위가 아닙니다.다시 놓아주세요");
pan(aa);
continue;
}
if(aa[a][b]==0)
{
aa[a][b]=-1;
player--;
pan(aa);
}

else
{
printf("★이미 놓여져 있습니다. 다른곳에 놓아주세요\n");
pan(aa);
continue;


}
winn=win(aa);
if(winn==-1) //백이 승리 조건에 도달하였나?
{
printf("백이 승리하였습니다.");
goto gamewin;
}

}

gamewin:
printf("게임이 끝났습니다.\n다시하시려면 1번을, 끝내시려면 1 이외의 키를 눌러주세요.");
scanf("%d",&c);
switch(c)
{
case 1 :

c=0;
aa[21][21]=0;
player=0;
goto return1;
break;
default :
break;
}
return 0;

}
} 오목판함수 흑돌
차례 승리조건
검사 함수 백돌차례 게임 끝낸 후
다시하기 선택 273줄 main함수
Full transcript