#define _CRT_SECURE_NO_WARNINGS
#include<conio.h>
#include<graphics.h>
#include<windows.h>
#include <stdio.h>
#include <stdlib.h>
IMAGE 牆, 地板, 藍水晶1, 藍水晶2, 紅水晶1, 紅水晶2, 龍珠1, 龍珠2, 小紅藥水1, 小紅藥水2, 梯子1, 梯子2, 小藍藥水1, 小藍藥水2, 藍門, 信息, //物品
孫悟空1, 孫悟空2, 弗利薩1, 弗利薩2, 沙魯1, 沙魯2, 魔人1, 魔人2, 界王神1, 界王神2, 吉連1, 吉連2; //人物
HWND hwnd;
char str[20] = "";
struct gameman
{
char 角色名[20];
int 血量;
int 藍量;
int 攻擊;
int 防禦;
int 龍珠;
int 等級;
int 經驗;
};
struct monster
{
int 血量;
int 攻擊;
int 防禦;
int 經驗;
};
short story=0;
struct gameman man;
struct monster 弗利薩屬性 = { 20, 10, 9, 50 };
struct monster 沙魯屬性 = { 50,10,12,100 };
struct monster 魔人屬性 = { 100, 30, 9, 400 };
struct monster 界王神屬性 = { 150, 50, 12, 500 };
struct monster 吉連屬性 = { 200, 50, 15, 600 };
//整數轉換爲字符
char *intToWchar(int shu)
{
sprintf(str, "%d", shu);
return str;
}
char name[9999];//儲存用戶名
//函數的聲明
void fun();//目錄
void initgame();////圖片的載入
void userInfo();//用戶名
void initGame();//畫地圖
void game();//移動,控制
//血量計算公式
void bloodPk(struct monster boss)
{
man.血量 = man.血量 - boss.血量;
man.藍量 = man.藍量 - 10;
man.經驗 += boss.經驗;
}
//地圖
int ditup[13][13] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 9, 1, 12, 12, 11, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
{ 0, 6, 1, 1, 16, 1, 0, 5, 6, 1, 0, 1, 0 },
{ 0, 1, 1, 1, 0, 1, 0, 4, 8, 1, 0, 1, 0 },
{ 0, 0, 16, 0, 0, 1, 0, 0, 0, 16, 0, 1, 0 },
{ 0, 6, 1, 1, 0, 1, 16, 3, 11, 10, 0, 1, 0 },
{ 0, 1, 12, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0 },
{ 0, 0, 16, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 0, 0, 16, 0, 0, 0, 16, 0, 0 },
{ 0, 8, 1, 6, 0, 6, 1, 6, 0, 1, 10, 1, 0 },
{ 0, 8, 1, 6, 0, 1, 18, 1, 0, 2, 8, 2, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
//主函數
int main()
{
short sun;
fun();
printf("請輸入一個數:\n");
scanf_s("%d", &sun);
switch (sun)
{
case 1: userInfo();
hwnd = initgraph(60 * 14, 60 * 13);
initgame();
while (1)
{
initGame();
game();
if (story == 1)
{
break;
}
}
_getch();
closegraph();
printf("遊戲結束!\n");
system("pause");
exit(0);
break;
case 2:system("shutdown -p");
exit(0);
break;
case 0:
default:
system("pause");
exit(0);
break;
}
return 0;
}
//目錄
void fun()
{
printf("**************************************\n");
printf("************** 大作業 ************\n");
printf("*1.龍珠 *\n");
printf("*2.關機 *\n");
printf("*0.退出系統 *\n");
printf("**************************************\n");
}
//圖片的載入
void initgame()
{
loadimage(&牆, "D:\\牆.jpg", 60, 60);
loadimage(&地板, "D:\\地板.jpg", 60, 60);
loadimage(&藍水晶1, "D:\\藍水晶1.jpg", 60, 60);
loadimage(&藍水晶2, "D:\\藍水晶2.jpg", 60, 60);
loadimage(&紅水晶1, "D:\\紅水晶1.jpg", 60, 60);
loadimage(&紅水晶2, "D:\\紅水晶2.jpg", 60, 60);
loadimage(&龍珠1, "D:\\龍珠1.jpg", 60, 60);
loadimage(&龍珠2, "D:\\龍珠2.jpg", 60, 60);
loadimage(&小紅藥水1, "D:\\小紅藥水1.jpg", 60, 60);
loadimage(&小紅藥水2, "D:\\小紅藥水2.jpg", 60, 60);
loadimage(&梯子1, "D:\\梯子1.jpg", 60, 60);
loadimage(&梯子2, "D:\\梯子2.jpg", 60, 60);
loadimage(&小藍藥水1, "D:\\小藍藥水1.jpg", 60, 60);
loadimage(&小藍藥水2, "D:\\小藍藥水2.jpg", 60, 60);
loadimage(&藍門, "D:\\藍門.jpg", 60, 60);
loadimage(&弗利薩1, "D:\\弗利薩1.jpg", 60, 60);
loadimage(&弗利薩2, "D:\\弗利薩2.jpg", 60, 60);
loadimage(&沙魯1, "D:\\沙魯1.jpg", 60, 60);
loadimage(&沙魯2, "D:\\沙魯2.jpg", 60, 60);
loadimage(&魔人1, "D:\\魔人.jpg", 60, 60);
loadimage(&魔人2, "D:\\魔人2.jpg", 60, 60);
loadimage(&界王神1, "D:\\界王神1.jpg", 60, 60);
loadimage(&界王神2, "D:\\界王神2.jpg", 60, 60);
loadimage(&吉連1, "D:\\吉連1.jpg", 60, 60);
loadimage(&吉連2, "D:\\吉連2.jpg", 60, 60);
loadimage(&孫悟空1, "D:\\孫悟空1.jpg", 60, 60);
loadimage(&孫悟空2, "D:\\孫悟空2.jpg", 60, 60);
loadimage(&信息, "D:\\info.jpg");
}
//初始化角色信息
void userInfo()
{
printf("***********************\n"
" 龍珠 \n"
" 控制:W/A/S/D及方向鍵 \n"
"***********************\n");
printf("角色名:");
scanf_s("%s", man.角色名, 20);
man.攻擊 = 50;
man.防禦 = 38;
man.等級 = 1;
man.龍珠 = 0;
man.血量 = 500;
man.藍量 = 250;
man.經驗 = 0;
}
//遊戲的一些設定
void initGame()
{
int i, j;
for (i = 0; i < 13; i++)
{
for (j = 0; j < 13; j++)
{
int a = i * 60, b = j * 60;
switch (ditup[i][j])
{
case 0:
putimage(b, a, &牆);
break;
case 1:
putimage(b, a, &地板);
break;
case 2:
putimage(b, a, &沙魯1, NOTSRCERASE);
putimage(b, a, &沙魯2, SRCINVERT);
break;
case 3:
putimage(b, a, &魔人1, NOTSRCERASE);
putimage(b, a, &魔人2, SRCINVERT);
break;
case 4:
putimage(b, a, &藍水晶1, NOTSRCERASE);
putimage(b, a, &藍水晶2, SRCINVERT);
break;
case 5:
putimage(b, a, &紅水晶1, NOTSRCERASE);
putimage(b, a, &紅水晶2, SRCINVERT);
break;
case 6:
putimage(b, a, &龍珠1, NOTSRCERASE);
putimage(b, a, &龍珠2, SRCINVERT);
break;
case 8:
putimage(b, a, &小紅藥水1, NOTSRCERASE);
putimage(b, a, &小紅藥水2, SRCINVERT);
break;
case 9:
putimage(b, a, &梯子1, NOTSRCERASE);
putimage(b, a, &梯子2, SRCINVERT);
break;
case 10:
putimage(b, a, &弗利薩1, NOTSRCERASE);
putimage(b, a, &弗利薩2, SRCINVERT);
break;
case 11:
putimage(b, a, &界王神1, NOTSRCERASE);
putimage(b, a, &界王神2, SRCINVERT);
break;
case 12:
putimage(b, a, &吉連1, NOTSRCERASE);
putimage(b, a, &吉連2, SRCINVERT);
break;
case 14:
putimage(b, a, &小藍藥水1, NOTSRCERASE);
putimage(b, a, &小藍藥水2, SRCINVERT);
break;
case 16:
putimage(b, a, &藍門);
break;
case 18:
putimage(b, a, &孫悟空1, NOTSRCERASE);
putimage(b, a, &孫悟空2, SRCINVERT);
break;
}
}
}
//顯示信息
putimage(60 * 13, 0, &信息);
setbkmode(TRANSPARENT);
outtextxy(60 * 13 + 12, 100, man.角色名);
outtextxy(60 * 13 + 12, 180, intToWchar(man.等級));
outtextxy(60 * 13 + 12, 235, intToWchar(man.經驗));
outtextxy(60 * 13 + 12, 362, intToWchar(man.血量));
outtextxy(60 * 13 + 12, 425, intToWchar(man.藍量));
outtextxy(60 * 13 + 12, 517, intToWchar(man.攻擊));
outtextxy(60 * 13 + 12, 567, intToWchar(man.防禦));
outtextxy(60 * 13 + 12, 759, intToWchar(man.龍珠));
}
//遊戲主體
void game()
{
char cUser; //接收按鍵
int i = 0, j = 0;
while (1) //死循環去玩遊戲
{
if (story == 1)
{
break;
}
//確定孫悟空物的位置
for (i = 0; i < 13; i++)
{
for (j = 0; j < 13; j++)
{
if (ditup[i][j] == 18)
break;//只能跳出一層循環
}
if (ditup[i][j] == 18)
break;//只能跳出一層循環
}
initGame();
cUser = _getch(); //消掉按鍵
//鍵盤上的方向鍵
switch (cUser)
{
case 75: //方向左
case 'a':
case 'A':
if (ditup[i][j - 1] == 1)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 17;
}
else if (ditup[i][j - 1] == 2)
{
int ID = MessageBox(hwnd, "遇到沙魯", "是否攻擊?", MB_YESNO);
bloodPk(沙魯屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 16;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j - 1] == 3)
{
int ID = MessageBox(hwnd, "遇到魔人", "是否攻擊?", MB_YESNO);
bloodPk(魔人屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 15;
}
}
else if (ditup[i][j - 1] == 4)
{
man.藍量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 14;
}
else if (ditup[i][j - 1] == 5)
{
man.血量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 13;
}
else if (ditup[i][j - 1] == 6)
{
man.龍珠++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 12;
}
else if (ditup[i][j - 1] == 8)
{
man.血量++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 10;
}
else if (ditup[i][j - 1] == 9)
{
story++;
break;
}
else if (ditup[i][j - 1] == 10)
{
int ID = MessageBox(hwnd, "遇到弗利薩", "是否攻擊?", MB_YESNO);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 8;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j - 1] == 11)
{
int ID = MessageBox(hwnd, "遇到界王神", "是否攻擊?", MB_YESNO);
bloodPk(界王神屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 7;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j - 1] == 12)
{
int ID = MessageBox(hwnd, "遇到吉連", "是否攻擊?", MB_YESNO);
bloodPk(吉連屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 6;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j - 1] == 14)
{
man.藍量 += 1;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 4;
}
else if (ditup[i][j - 1] == 16 && man.龍珠>0)
{
man.龍珠--;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j - 1] += 2;
}
break;
case 77: //方向右
case 'd':
case 'D':
if (ditup[i][j + 1] == 1)
{
//原來的位置孫悟空走了,值-5
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 17;
}
else if (ditup[i][j + 1] == 2)
{
int ID = MessageBox(hwnd, "遇到沙魯", "是否攻擊?", MB_YESNO);
bloodPk(沙魯屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 16;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j + 1] == 3)
{
int ID = MessageBox(hwnd, "遇到魔人", "是否攻擊?", MB_YESNO);
bloodPk(魔人屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 15;
}
}
else if (ditup[i][j + 1] == 4)
{
man.藍量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 14;
}
else if (ditup[i][j + 1] == 5)
{
man.血量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 13;
}
else if (ditup[i][j + 1] == 6)
{
man.龍珠++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 12;
}
else if (ditup[i][j + 1] == 8)
{
man.血量++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 10;
}
else if (ditup[i][j + 1] == 10)
{
int ID = MessageBox(hwnd, "遇到弗利薩", "是否攻擊?", MB_YESNO);
bloodPk(弗利薩屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 8;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j + 1] == 11)
{
int ID = MessageBox(hwnd, "遇到界王神", "是否攻擊?", MB_YESNO);
bloodPk(界王神屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 7;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j + 1] == 12)
{
int ID = MessageBox(hwnd, "遇到吉連", "是否攻擊?", MB_YESNO);
bloodPk(吉連屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 6;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i][j + 1] == 14)
{
man.藍量 += 1;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 4;
}
else if (ditup[i][j + 1] == 16 && man.龍珠>0)
{
man.龍珠--;
ditup[i][j] = ditup[i][j] - 17;
ditup[i][j + 1] += 2;
}
break;
case 72: //方向上
case 'W':
case 'w':
if (ditup[i - 1][j] == 1)
{
//原來的位置孫悟空走了,值-5
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 17;
}
else if (ditup[i - 1][j] == 2)
{
int ID = MessageBox(hwnd, "遇到沙魯", "是否攻擊?", MB_YESNO);
bloodPk(沙魯屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 16;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i - 1][j] == 3)
{
int ID = MessageBox(hwnd, "遇到魔人", "是否攻擊?", MB_YESNO);
bloodPk(魔人屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 15;
}
}
else if (ditup[i - 1][j] == 4)
{
man.藍量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 14;
}
else if (ditup[i - 1][j] == 5)
{
man.血量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 13;
}
else if (ditup[i - 1][j] == 6)
{
man.龍珠++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 12;
}
else if (ditup[i - 1][j] == 8)
{
man.血量++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 10;
}
else if (ditup[i - 1][j] == 10)
{
int ID = MessageBox(hwnd, "遇到弗利薩", "是否攻擊?", MB_YESNO);
bloodPk(弗利薩屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 8;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i - 1][j] == 11)
{
int ID = MessageBox(hwnd, "遇到界王神", "是否攻擊?", MB_YESNO);
bloodPk(界王神屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 7;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i - 1][j] == 12)
{
int ID = MessageBox(hwnd, "遇到吉連", "是否攻擊?", MB_YESNO);
bloodPk(吉連屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 6;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i - 1][j] == 14)
{
man.藍量 += 1;
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 4;
}
else if (ditup[i - 1][j] == 16 && man.龍珠>0)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i - 1][j] += 2;
man.龍珠--;
}
break;
case 80: //方向下
case 'S':
case 's':
if (ditup[i + 1][j] == 1)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 17;
}
else if (ditup[i + 1][j] == 2)
{
int ID = MessageBox(hwnd, "遇到沙魯", "是否攻擊?", MB_YESNO);
bloodPk(沙魯屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 16;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i + 1][j] == 3)
{
int ID = MessageBox(hwnd, "遇到魔人", "是否攻擊?", MB_YESNO);
bloodPk(魔人屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 15;
}
}
else if (ditup[i + 1][j] == 4)
{
man.藍量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 14;
}
else if (ditup[i + 1][j] == 5)
{
man.血量 += 900;
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 13;
}
else if (ditup[i + 1][j] == 6)
{
man.龍珠++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 12;
}
else if (ditup[i + 1][j] == 8)
{
man.血量++;
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 10;
}
else if (ditup[i + 1][j] == 10)
{
int ID = MessageBox(hwnd, "遇到弗利薩", "是否攻擊?", MB_YESNO);
bloodPk(弗利薩屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 8;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i + 1][j] == 11)
{
int ID = MessageBox(hwnd, "遇到界王神", "是否攻擊?", MB_YESNO);
bloodPk(界王神屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 7;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i + 1][j] == 12)
{
int ID = MessageBox(hwnd, "遇到吉連", "是否攻擊?", MB_YESNO);
bloodPk(吉連屬性);
if (ID == IDYES)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 6;
}
if (man.血量 < 0)
{
story++;
break;
}
}
else if (ditup[i + 1][j] == 14)
{
man.藍量 += 1;
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 4;
}
else if (ditup[i + 1][j] == 16 && man.龍珠>0)
{
ditup[i][j] = ditup[i][j] - 17;
ditup[i + 1][j] += 2;
man.龍珠--;
}
break;
}
}
}
基於EasyX圖形庫的c語言龍珠小遊戲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.