플라즈밍
플라즈마 IT
플라즈밍
  • All (163)
    • MindSet (2)
    • Wisdom (8)
    • Book (18)
    • [Web] (6)
      • [Web]Guide (2)
      • [Web]HTML-CSS-JS (1)
      • [Web]ReactJS (0)
      • [Web]NextJS (1)
    • 퀀트주식투자 (4)
      • [리포트]포트폴리오 (4)
    • 자산배분전략 (2)
      • [리포트]자산배분전략 (1)
    • 포트폴리오 (0)
      • 발걸음 (0)
    • 개발 Note (3)
    • TipNote (5)
    • 알고리즘 (27)
      • 백준[BOJ] 오답노트 (27)
      • 백준[BOJ] 강의 정리 노트 (0)
    • etc-posts (18)
      • Unity :: C# 튜토리얼 (18)
    • Web&Know (23)
    • 끄적임 (4)
    • 세상이슈 (0)
    • Youtube 유튜브 (3)
      • Youtube 채널소개 (3)
    • 창업 Know&Idea (1)
    • Web&Dev (4)
    • 프로젝트 (6)
      • Unity5 Project (3)
      • UnrealEngine4 Project (2)
      • Web Page (1)
    • 주가차트-기술적분석 (2)
    • BlockChain (7)
    • SystemDesign (11)

인기 글

최근 글

hELLO · Designed By 정상우.
플라즈밍

플라즈마 IT

C언어로 만든 생애 첫 게임
카테고리 없음

C언어로 만든 생애 첫 게임

2017. 10. 8. 16:18
반응형

프로젝트이름 원슨어택

게임이름 신의한수

위 둘의 차이는 나도 헷갈린다.







소스공개:




#include<stdio.h>

#include<iostream>

#include<stdlib.h>

#include<string.h>

#include<windows.h>

#include<time.h>


#define true 1

#define false 0


using namespace std;


typedef struct set_field

{

int howin = -1;

//1없음,2플래이어,3컴퓨터

}SET;


typedef struct player 

{

char name[100];

int HP=1;

int SP=0;


int defend = NULL;


int axis_x = NULL;

int axis_y = NULL;


int AI = NULL; // AI인경우 랜덤함수를 통해 이동과 공격을 설정한다.(1 이면 AI)


int action1[3];

int action2[3];


struct player* ptn;// 방어기제를 알기위한 유기적 관계 형성

}Player;


SET F[3][4];

Player A;

Player C;


void GUI_f(int x1, int y1, int x2, int y2);

void GUI_action(Player* dp,int i);

void GUI_act(Player *dp1, Player *dp2);

void GUI_p(Player *dp1, Player *dp2);

void end(void);

void select_action(Player *dp);


void main(void)

{




printf("      play game of 신의 한수(제작자:응컴 16 김도영) \n\n\n  ");

there:

printf("골라! :: 1번 1인용, 2번 :2인용 3:설명\n"  );

int sel = 0;

cin >> sel;



strcpy_s(A.name,100,"Player1");

A.axis_x = 1;

A.axis_y = 0;

A.ptn = &C;


if (sel == 1)

{

strcpy_s(C.name, 100, "alpha-GO");

C.axis_x = 1;

C.axis_y = 3;

C.AI = true;

C.ptn = &A;


}

else if(sel ==2)

{

strcpy_s(C.name, 100, "Player2");

C.axis_x = 1;

C.axis_y = 3;

C.AI = false;

C.ptn = &A;

}

else if (sel == 3)

{

printf("게임설명:\n턴제방식의 게임으로 3개의 행동을 고른다 .이동,공격,방어가 있다\n");

Sleep(2000);

printf("이동과 공격은 방향이 있다\n");

Sleep(2000);

printf("공격과 필살기는 방어가 가능하다\n");

Sleep(3000);

printf("방어에 성공하면 SP를 얻고 전범위 공격인 필살기를 사용할수 있다\n\n");

Sleep(1000);

printf("1P 아이콘 ■ ,2P or 알파고 아이콘 ▒ \n\n");

goto there;

}

else

{

cout << "다시골라!\n" << endl;

goto there;

}

GUI_f(A.axis_x, A.axis_y, C.axis_x, C.axis_y);


//---------------------------------------default-----------------//


while (1)

{

select_action(&A);

select_action(&C);

GUI_act(&A, &C);


}

//----------------------------------play-----------------------//


system("pause");

}


void GUI_f(int x1,int y1,int x2,int y2)

{

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 4; j++)

{

F[i][j].howin = 0;

}

} //필드 초기화

int cnt = 0;

F[x1][y1].howin = 1;

F[x2][y2].howin = 2;


if (F[x1][y1].howin == F[x2][y2].howin)

{

F[x2][y2].howin = 4;

}

Sleep(1000);

system("cls");


cout << endl << endl;


for (int i = 0; i < 3; i++)//□ ■ ▲

{

for (int j=0; j < 4; j++)

{

if (F[i][j].howin == 0) {

printf("□");

}

else if (F[i][j].howin == 1)

{

printf("■");

}


else if (F[i][j].howin == 2) {

printf("▒");

}

else if (F[x2][y2].howin == 4)

{

printf("▣");

}


cnt++;

if (cnt >= 4)

{

cnt = 0;

printf("\n");

}


}


}//필드별 위치 구현

}

void GUI_action(Player *dp,int i)

{

Sleep(1500);

if (dp->action1[i] == 1)

{


if (dp->action2[i] == 1)

{

if (dp->axis_y < 3) (dp->axis_y)++;

cout << dp->name << "이 ->으로 이동합니다" << endl;

}

else if (dp->action2[i] == 2)

{

if (dp->axis_x > 0) (dp->axis_x)--;

cout << dp->name << "이 위로 이동합니다" << endl;

}

else if (dp->action2[i] == 3)

{

if (dp->axis_y > 0) (dp->axis_y)--;

cout << dp->name << "이 <-로 이동합니다" << endl;

}

else if (dp->action2[i] == 4)

{

if (dp->axis_x < 2) (dp->axis_x)++;

cout << dp->name << "이 밑으로 이동합니다" << endl;

}

}

if (dp->action1[i] == 2)

{


if (dp->action2[i] == 1)

{

if ( (dp->axis_x)==(dp->ptn->axis_x) && (dp->axis_y + 1) == (dp->ptn->axis_y) )

{

if ((dp->ptn->defend) == false)

{

cout << "->방향 공격시도!" << endl;;

cout << "->방향 공격성공!" << endl;;

cout << dp->name << "이 승리했습니다!" << endl;

end();

}

else

{

cout << "->방향 공격시도!" << endl;;

cout << "상대가 방어에 성공하므로 상대는 SP를 획득하였습니다" << endl;

cout << "warning : 상대의 필살기에 대비하세요!!" << endl;

Sleep(1000);

(dp->ptn->SP)++;

}

}

else

{

cout << dp->name <<"-> 방향 공격실패!" << endl;

}

}

else if (dp->action2[i] == 2)

{

if ((dp->axis_y) == (dp->ptn->axis_y) && (dp->axis_x - 1) == (dp->ptn->axis_x))

{

if ((dp->ptn->defend) == false)

{

cout << "위쪽방향 공격시도!" << endl;;

cout << "위쪽방향 공격성공!" << endl;;

cout << dp->name << "이 승리했습니다!" << endl;

end();

}

else

{

cout << "위쪽방향 공격시도!" << endl;;

cout << "상대가 방어에 성공하므로 상대는 SP를 획득하였습니다" << endl;

cout << "warning : 상대의 필살기에 대비하세요!!" << endl;

Sleep(1000);

(dp->ptn->SP)++;

}

}

else

{

cout << dp->name << "위쪽 방향 공격실패!" << endl;

}

}

else if (dp->action2[i] == 3)

{

if ((dp->axis_x) == (dp->ptn->axis_x) && (dp->axis_y - 1) == (dp->ptn->axis_y))

{

if ((dp->ptn->defend) == false)

{

cout << "<-방 공격시도!" << endl;;

cout << "<-방 공격성공!" << endl;;

cout << dp->name << "이 승리했습니다!" << endl;

end();

}

else

{

cout << "<-방 공격시도!" << endl;;

cout << "상대가 방어에 성공하므로 상대는 SP를 획득하였습니다" << endl;

cout << "warning : 상대의 필살기에 대비하세요!!" << endl;

Sleep(1000);

(dp->ptn->SP)++;

}

}

else

{

cout << dp->name << "<- 방향 공격실패!" << endl;

}

}

else if (dp->action2[i] == 4)

{

if ((dp->axis_y) == (dp->ptn->axis_y) && (dp->axis_x + 1) == (dp->ptn->axis_x))

{

if ((dp->ptn->defend) == false)

{

cout << "아래방향 공격시도!" << endl;;

cout << "아래방향 공격성공!" << endl;;

cout << dp->name << "이 승리했습니다!" << endl;

end();

}

else

{

cout << "아래방향 공격시도!" << endl;;

cout << "상대가 방어에 성공하므로 상대는 SP를 획득하였습니다" << endl;

cout << "warning : 상대의 필살기에 대비하세요!!" << endl;

Sleep(1000);

(dp->ptn->SP)++;

}

}

else

{

cout << dp->name << "아래방향 공격실패!" << endl;

}

}

else

{

cout << "필살기 시전!!" << endl;

if(dp->ptn->defend == false)

{

cout << dp->name << "이승리하였습니다!" << endl;

cout << " 게임을 종료합니다" << endl;

end();

}

else

{

cout <<dp->ptn->name <<"가 필살기 방어에 성공하였습니다" << endl;

(dp->ptn->SP)++;

}

}

}

if (dp->action1[i] == 3)

{

cout << dp->name << "이";

cout << "방어를 시도합니다" << endl;

dp->defend = true;

}


GUI_f(A.axis_x, A.axis_y, C.axis_x, C.axis_y);

}

void GUI_act(Player *dp1, Player *dp2)

{

for (int i = 0; i < 3; i++)

{


GUI_action(dp1, i);

dp2->defend = false;//한턴이 지나면 방어모드 제거

GUI_action(dp2, i);

dp1->defend = false;

}

}

void GUI_p(Player *dp1,Player *dp2)

{

cout << endl;

cout << dp1->name << "       ";

cout << dp2->name << endl;


cout << "HP:"; printf("♥");cout << "        ";

cout << "HP:"; printf("♥"); cout << endl;


cout << "SP:" << dp1->SP << "         ";;

cout << "SP:" << dp2->SP << endl;

}

void end(void)

{

printf("게임을 종료합니다\n");

Sleep(10000);

exit(0);

} //프로그램 종료 함수


void select_action(Player *dp)

{

int x; int y; int cnt=0;

cout << endl;


if (dp->AI == false)

{



for (int i = 0; i < 3; i++)

{

re:

GUI_p(&A, &C);


printf("<interface:%s>%d번행동\n",dp->name,i+1);

printf("1.이동\n");

printf("2.공격\n");

printf("3.방어\n");

printf("메뉴를 선택하시오:");

scanf_s("%d", &x);

if (x == 1)

{

printf("\n이동방향선택\n");

printf("1.→\n");

printf("2.↑\n");

printf("3.←\n");

printf("4.↓\n");

scanf_s("%d", &y);

}

else if (x == 2)

{

here:

printf("\n공격방향선택\n");

printf("1.→\n");

printf("2.↑\n");

printf("3.←\n");

printf("4.↓\n");

printf("5.필살기(SP 1 필요) 현재:%d \n",dp->SP);

scanf_s("%d", &y);

if (dp->SP == 0 && y == 5) { printf("다시선택"); goto here; }

}

else if (x == 3)

{

y = 0;

}

else

{

cout << "다시선택" << endl;

goto re;

}


dp->action1[i] = x;

dp->action2[i] = y;


//system("cls");

GUI_f(A.axis_x, A.axis_y, C.axis_x, C.axis_y);;

}

}

else if (dp->AI == true)

{

GUI_p(&A, &C);

for (int i = 0; i < 3; i++)

{



cout << "삐이이이삑 알파고 작 동 중 ..." << endl;

cout << "최적의 전략 선택중 ..." << endl;

Sleep(700);

srand((unsigned)time(NULL));

int x = rand() % 3 + 1;

if (x = 3)

{

x = rand() % 3 + 1;

if (x = 3)

{

x = rand() % 3 + 1;

}

}

int y = rand() % 4 + 1;


if (dp->SP >= 1 && rand()%2 ) 

{ 

x = 2; y = 5;

(dp->SP)--;

}

dp->action1[i] = x;

dp->action2[i] = y;

}

}

}

Onecen attack1 배포.zip


반응형
    플라즈밍
    플라즈밍
    퀀트 주식투자 자산배분 데이터분석 정보 공유 프로그래밍,투자 주제의 책 강의 리뷰 노하우 전수

    티스토리툴바