//말달리기 게임
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#define randomsize() srand((unsigned)time(NULL))
#define random(x) rand()%(x)
void gotoxy(int x, int y)
{
COORD Pos={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
void main()
{
int sec,ms;
double ti,st,en;
int x[5]={3,3,3,3,3}, y=2, z[5]={1,1,1,1,1},a,i,loop=1;
randomsize();
st=clock();
for(i=1;i<15;i++)
{
gotoxy(56,i);
printf("|");
}
while (loop=1)
{
for(i=0;i<5;i++)
{
if (z[i]==1)
{
gotoxy(x[i],y+i*2); printf("~-===*");
gotoxy(x[i],y+i*2+1); printf(" `./");
}
else
{
gotoxy(x[i],y+i*2); printf("'-===+");
gotoxy(x[i],y+i*2+1); printf(" / '.");
}
}
en=clock();
gotoxy(20,17);
ti=(en-st)/1000;
sec=(int)ti;
ms=(int)((ti-sec)*100);
printf("%d 초 %d",sec,ms);
Sleep(100);
for(i=0;i<5;i++)
{
if (x[i]>50) loop=0;
else
{
}
}
if (loop==1)
{
for(i=0;i<5;i++)
{
gotoxy(x[i],y+i*2); printf(" ");
gotoxy(x[i],y+i*2+1); printf(" ");
a=random(3);
if(a==1)
{
x[i]++;
z[i]=-z[i];
}
}
}
}
gotoxy(2,20);
//printf(%d Win!!", );
}
//말달리기 게임 - 라인넘버와 우승말 표시
#include <stdio.h> // printf, scanf
#include <time.h> // clock
#include <conio.h> // getch, putch, kbhit
#include <windows.h> // gotoxy
#define randomsize() srand((unsigned)time(NULL))
// srand:랜덤으로 같은 숫자만 출력되는걸 방지하기위해 난수발생함수 srand를 사용함
// 위와같이 복잡하게 쓰는것을 아래처럼 간단히 정의하여 사용
#define random(x) rand()%(x)
void gotoxy(int x, int y) // 좌표설정
{
COORD Pos={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
void main()
{
int mal[]={1,2,3,4,5,6};
int sec,ms,po; // (sec)초(ms) po:말번호(아래에서 우승 말 표시)
double ti,st,en; // 시간은 실수이므로 double
int x[5]={3,3,3,3,3}, y=2, z[5]={1,1,1,1,1},a,i,loop=1; // 첫 시작위치는 x=3
randomsize();
st=clock(); // 출발 시각
//시작 지점에 말 번호 표시
for(i=1;i<6;i++)
{
gotoxy(1,y+i*2);
printf("%d",i);
}
// 도착지점에 라인 표시
for(i=1;i<15;i++)
{
gotoxy(56,i);
printf("|");
}
while (loop==1)
{
for(i=0;i<5;i++)
{
if (z[i]==1) // 출발하는 모양은 똑같다.
{
gotoxy(x[i],y+i*2); printf("~-===*"); // 초기치 x=3,y=2 => (3,2)에 출력되는 모양
gotoxy(x[i],y+i*2+1); printf(" `./");
}
else
{
gotoxy(x[i],y+i*2); printf("'-===+");
gotoxy(x[i],y+i*2+1); printf(" / '.");
}
}
en=clock(); // 도착시각
gotoxy(20,17); // 실행시각 표시좌표
ti=(en-st)/1000; // 실제 걸린 시간 = 도착-출발
sec=(int)ti; // 시간을 정수화 한다.
ms=(int)((ti-sec)*100);
printf("%d 초 %d",sec,ms);
Sleep(100); // 1/10초 대기
for(i=0;i<5;i++)
{
if (x[i]>50)
{
loop=0; // 말의 위치가 50 이하면 계속 loop (말의 길이는 6), i는 말의 이름(1번말, 2번말)..
po=i;
}
else
{
}
}
if (loop==1)
{
for(i=0;i<5;i++)
{
gotoxy(x[i],y+i*2); printf(" "); // clear. 말 다리가 달린 후 지워지도록.
gotoxy(x[i],y+i*2+1); printf(" ");
a=random(3); // 랜덤 출력 함수(3으로 나눈 정수:0,1,2)-각각 확률이 33%, 숫자가 커지면 속도가 느려진다.
if(a==1)
{
x[i]++; // 첫 값은 4
z[i]=-z[i]; // 말 다리가 앞뒤로 교대
}
}
}
}
gotoxy(40,17);
printf("%d 번 말 우승 \n", po+1);
}
// 키보드이용 움직이기
#include <stdio.h>
#include <windows.h>
#include <conio.h>
void gotoxy(int x, int y)
{
COORD Pos={x-1,y-1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
void main()
{
int x,y,bk,key,track;
x=10;
y=5;
track=0;
while(1)
{
gotoxy(1,1);
printf("x:%3d y:%3d",x,y);
gotoxy(x,y);
printf("♥");
key=getch();
// 상하로 움직일때 이전 하트를 삭제
if(track==0)
{
gotoxy(x,y);
printf(" ");
}
if(key!=224)
{
if(key=='a' || key=='A' || key==52) if(x>1) x=x-1;
if(key=='d' || key=='D' || key==54) if(x<50) x=x+1;
if(key=='w' || key=='W' || key==56) if(y>1) y=y-1;
if(key=='s' || key=='S' || key==50) if(y<25) y=y+1;
// 52,54,56,50 : 4,6,8,2 숫자키패드
}
else if(key==224)
{
bk=getch();
if(bk==75) if(x>1) x=x-1; // 좌
if(bk==77) if(x<50) x=x+1; // 우
if(bk==72) if(y>1) y=y-1; //상
if(bk==80) if(y<25) y=y+1; // 하 방향키
}
if(key=='q' || key=='Q' || key==55)
if(y>1 && x>1) {x=x-2;y=y-1;} // 좌상측 대각선 x는 2씩, y는 1씩 변경
if(key=='e' || key=='E' || key==57)
if(y>1 && x<50) {x=x+2;y=y-1;} // 우상
if(key=='z' || key=='Z' || key==49)
if(y<25 && x>1) {x=x-2;y=y+1;} //좌하
if(key=='c' || key=='C' || key==51)
if(y<25 && x<50) {x=x+2;y=y+1;} //우하
if(key == 32) if (track==0) track=1; else track=0; // space bar
if(key == 27) system("cls"); //esc
if(key == 13) //enter
{
gotoxy(x,y);printf("STOP\n");
break;
}
}
}
//청기 백기 들기
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#define randomize() srand((unsigned)time(NULL))
#define random(x) rand()%(x)
void gotoxy(int x, int y)
{
COORD Pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
int ti=3000,t=0;
void init();
void main()
{
int ks,q,sq,i,p=0;
char ki[15],ski[15],c1[6],s1[6]; // ki:사용자응답, ski:컴퓨터
init();
randomize();//난수 발생
strcpy(ski," ");//지정된 위치에 클리어
strcpy(ki," ");//지정된 위치에 클리어
gotoxy(5,2);//지정된 위치에 클리어
printf("%s",ki); //지정된 위치에 클리어
gotoxy(5,4);//지정된 위치에 클리어
printf("%s",ski);//지정된 위치에 클리어
gotoxy(5,6);//지정된 위치에 클리어
printf("%s",ski);//지정된 위치에 클리어
strcpy(c1,"[ 컴 ]");
strcpy(s1,"[사람]");
while(1)
{
gotoxy(5,2); // 컴퓨터 출력 위치
printf("%s",c1);
gotoxy(5,4); // 사람 출력 위치
printf("%s",s1);
for(i=1;i<=10;i++) //10회 반복 하기 위해
{
ks=random(4); //난수 0~3까지 발생 ...컴퓨터가 발생
if(ks==0)
strcpy(ki," 청기올려!!");
else if(ks==1)
strcpy(ki," 청기내려!!");
else if(ks==2)
strcpy(ki," 백기올려!!");
else if(ks==3)
strcpy(ki," 백기내려!!");
gotoxy(11,2); //컴이 생각한 것을 표시 하는 위치
printf("%s",ki); //
gotoxy(12,4); //사람이 컴에 대응 ...
Sleep(100);
sq=getch();
if(sq=='a' || sq=='A')//a 나 A이면 청기 올려 대응
strcpy(ski," 청기올려!!");
else if(sq=='z' || sq=='Z')
strcpy(ski," 청기내려!!");
else if(sq=='d' || sq=='D')
strcpy(ski," 백기올려!!");
else if(sq=='c' || sq=='C')
strcpy(ski," 백기내려!!");
else if(sq=='0')
strcpy(ski,"시간초과!!");
gotoxy(11,4); //사용자가 대응한 것을 표시
printf("%s",ski);
ks=strcmp(ki,ski); //컴 과 사용자가 같으면 결과가 0으로 반환
if(ks==0)// 컴 과 사용자가 같으면 즉 결과가 0 이면 맞추었으면 ..
p++;// 횟수 증가 ...
gotoxy(11,4);
printf("%s",ski);
Sleep(100);
strcpy(ski," ");
gotoxy(11,4);
printf("%s",ski);
}
//FOR~END 10번 반복
if(p>=8)//맞힌 횟수가 8번이상이면
{ gotoxy(5,6);
printf("%d.. 매우 민첩!!",p);
}
else if(p>=4)//맞힌 횟수가 4번이상이면
{gotoxy(5,6);
printf("%d .. 속도가 보통 !!",p);
}
else //맞힌 횟수가 3번이하 이면
{
gotoxy(5,6);
printf("%d .. 노력!!",p);
}
p=0;
gotoxy(1,20);
printf("계속하실래요?(Y/N)");
q=getch();
if(q=='n' || q=='N')
break;
else // 계속할려면 표시된 위치의 모든 문자를 클리어
{
t=t+1000; // 화면이 바뀔 때마다 더 빨라지게
init();
}
}//whie~~end
}
void init()
{
system("cls");
gotoxy(25,9);
printf("3초후에 실행 !!");
gotoxy(25,11);
printf("A => 청기 올려 !!");
gotoxy(25,12);
printf("Z => 청기 내려 !!");
gotoxy(25,13);
printf("D => 백기 올려 !!");
gotoxy(25,14);
printf("C => 백기 내려 !!");
if(t>=3000)
t=2000;
Sleep(ti-t); // 대기시각
system("cls");
}