HEIIO!

用c++实现一个宠物领养的小程序哦

还是用的easy_x这个图形界面,简单上手,附上官网地址:[link]http://www.easyx.cn
当然,我还是推荐用QT和JAVA 实现图形界面的,要去学习了,冲
既然是给大家看easy_x的,

效果图




上代码!

#include <iostream>
#include <stdlib.h>
#include <graphics.h>
#include <conio.h>
#include <string>
#include <stdio.h>
using namespace std;#define M 100
int c_count = 0;
int t = 0;
void enter(); //界面函数
void login();//登录界面
void regist();//注册界面
void menu();//功能界面
void petmenu();//宠物功能界面
void adopt();//领养宠物
void Recharge_money();//充值函数
void information();//查看账户信息
void save_dog();//存储小狗的函数
void save_cat();//存储小猫的函数
void save_pikaqiu();//存储皮卡丘的函数
void pet_message();//查看宠物状态
void instruction();//饲养说明
void play();//宠物互动
void raise_dog();//饲养小狗
void raise_cat();//饲养小猫
void raise_pikaqiu();//饲养皮卡丘
void shop();//商店
void period(int t);             //时间函数
int weather();                  //天气函数typedef struct ul
{int number = 0;//用户拥有的宠物数量int money = 0;//用户拥有的金钱数量char count[10];//用户的账号int sd = 0;//0:没有宠物 1:小狗 2:小猫 3:皮卡丘 4:小狗+小猫 5:小狗+皮卡丘 6:小猫+皮卡丘 7:小狗+小猫+皮卡丘int water = 0;//拥有的水的数量int food = 0;//拥有的食物数量char password[6];//用户的密码
}ur;//账户
typedef struct pets
{int sd;//宠物的id,1:小狗,2:小猫,3:皮卡丘int age = 1;                 //年龄int hunger = 1;              //饥饿值int thirst = 1;              //口渴值int mood = -2;                //心情指数int health = 1;              //健康指数int step = 15;                //行动点数int id = 0;;     //宠物所属主人的id号码int life = 30; //宠物的寿命
}pets;
class pet                             //建立一个宠物类
{public:pet(int a, int h, int t, int m, int he, int st, int li)   //构造函数{age = a; hunger = h; thirst = t; mood = m; health = he; step = st; life = li;}int geta() { return age; }                                  //提取各个私有成员int geth() { return hunger; }int gett() { return thirst; }int getm() { return mood; }int gethe() { return health; }int getst() { return step; }int getl() { return life; }                void feed()                      //喂食函数{hunger--;step = step - 5;}void drink() { thirst--; step = step - 3; }  //喂水函数void doctor() { step = step - 10; health = health + 5; }         //看医生函数void touch(int w);                    //抚摸函数void fun(int w);                      //玩耍函数
private:int age;                 //年龄int hunger;              //饥饿值int thirst;              //口渴值int mood;                //心情指数int health;              //健康指数int step;int life;//行动点数
};inline void pet::touch(int w)        //抚摸函数
{step = step - 3;switch (w){case 0:mood = mood + 2;break;case 1:mood++;break;case 2:mood++;break;case 3:mood--;thirst--;break;case 4:mood--;hunger--;break;}
}
inline void pet::fun(int w)     //玩耍函数
{step = step - 8;switch (w){case 0:mood = mood + 2;break;case 2:hunger++;thirst++;health++;break;case 3:hunger = hunger + 2;thirst++;health++;break;case 4:hunger++;thirst++;health++;break;}
}
void period(int t)             //时间函数
{t = t % 3;setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));TCHAR s1[] = _T("现在是上午");TCHAR s2[] = _T("现在是下午");TCHAR s3[] = _T("现在是晚上");switch (t){case 0:outtextxy(150, 220, s1); break;case 1:outtextxy(150, 220, s2); break;case 2:outtextxy(150, 220, s3); break;}
};
int weather()                  //天气函数
{int w;w = rand() % 5;setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));TCHAR s1[] = _T("天气:晴。:");TCHAR s2[] = _T("天气:阴");TCHAR s3[] = _T("天气:小雨。");TCHAR s4[] = _T("天气:暴雨");TCHAR s5[] = _T("天气:大风。");switch (w){case 0:outtextxy(300, 220, s1); break;case 1:outtextxy(300, 220, s2); break;case 2:outtextxy(300, 220, s3); break;case 3:outtextxy(300, 220, s4); break;case 4:outtextxy(300, 220, s5); break;}return w;
}void  shop()
{initgraph(499, 693);int f = 0;int i = 0;ur a[M];loadimage(NULL, _T("imp4.jpg"));FlushMouseMsgBuffer();MOUSEMSG m;FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 100 && m.x < 220 && m.y>90 && m.y < 152){if (a[c_count].money < 15){char s[10];InputBox(s, 10, "余额不足,是否充值:y:前往充值,n:返回");if (strcmp(s, "y") == 0){menu();}if (strcmp(s, "n") == 0){petmenu();}}else{a[c_count].money = a[c_count].money - 15;a[c_count].food++;FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);char n[10];int h = 0;InputBox(n, 10, "购买成功! :1.继续  2.返回");sscanf(n, "%d", &h);if (h == 1){shop();}else{petmenu();}}}if (m.x > 115 && m.x < 215 && m.y < 320 && m.y>232){if (a[c_count].money < 10){char s[10];InputBox(s, 10, "余额不足,是否充值:y:前往充值,n:返回");if (strcmp(s, "y") == 0){menu();}if (strcmp(s, "n") == 0){petmenu();}}else{a[c_count].money = a[c_count].money - 10;a[c_count].water++;FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);char n[10];int h = 0;InputBox(n, 10, "购买成功! :1.继续  2.返回");sscanf(n, "%d", &h);if (h == 1){shop();}else{petmenu();}}}if (m.x > 235 && m.x < 320 && m.y < 488 && m.y>374){if (a[c_count].money < 20){char s[10];InputBox(s, 10, "余额不足,是否充值:y:前往充值,n:返回");if (strcmp(s, "y") == 0){menu();}if (strcmp(s, "n") == 0){petmenu();}}else{a[c_count].money = a[c_count].money - 20;a[c_count].water++;a[c_count].food++;FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);char n[10];int h = 0;InputBox(n, 10, "购买成功! :1.继续  2.返回");sscanf(n, "%d", &h);if (h == 1){shop();}else{petmenu();}}}if (m.x > 240 && m.x < 300 && m.y < 670 && m.y>500){petmenu();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}
}
void raise_dog()
{initgraph(1280, 720);loadimage(NULL, _T("宠物互动.jpg"));int f = 0;ur a[M];int i = 0;int g;FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);int m = 0;pets b[M];FILE* fp_1;fp_1 = fopen("小狗.txt", "rb");if (fp_1 == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp_1)){fread(&b[m], sizeof(struct pets), 1, fp_1);m++;}fclose(fp_1);pet mypet(b[c_count].age, b[c_count].hunger, b[c_count].thirst, b[c_count].mood, b[c_count].health, b[c_count].step, b[c_count].life);int life, date, w;int emg, Nstep, Nage;setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));TCHAR s1[5];TCHAR s2[5];_stprintf(s2, _T("%d"), a[c_count].water);        // 高版本 VC 推荐使用 _stprintf_s 函数_stprintf(s1, _T("%d"), a[c_count].food);outtextxy(208, 440, "(");outtextxy(238, 440, "X");outtextxy(288, 440, ")");outtextxy(460, 440, "(");outtextxy(490, 440, "X");outtextxy(540, 440, ")");outtextxy(258, 440, s1);outtextxy(510, 440, s2);life = mypet.getl();date = mypet.geta();if (date == life){char s[10];InputBox(s, 10, "宠物已死亡,y:重新领养,n:返回");if (strcmp(s, "y") == 0){b[c_count].age = 1;b[c_count].health = 10;b[c_count].hunger = 2;b[c_count].mood = 2;b[c_count].thirst = 2;b[c_count].step = 20;FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);}if (strcmp(s, "n") == 0){pet_message();}}if (b[c_count].health < -10){char s[10];InputBox(s, 10, "宠物已病死,y:重新领养,n:返回");if (strcmp(s, "y") == 0){b[c_count].age = 1;b[c_count].health = 10;b[c_count].hunger = 2;b[c_count].mood = 2;b[c_count].thirst = 2;b[c_count].step = 20;FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);}if (strcmp(s, "n") == 0){pet_message();}}else{for (date = mypet.geta(); date < life; date++){w = weather();                  //调用天气函数t = t % 3;                        //t为控制时间整形period(t);                    //调用时间函数Nstep = mypet.getst();setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));outtextxy(150, 240, "你的宠物:");outtextxy(420, 240, "你的步数:");TCHAR s[5];_stprintf(s, _T("%d"), Nstep);        // 高版本 VC 推荐使用 _stprintf_s 函数outtextxy(520, 240, s);if (b[c_count].health < -7){outtextxy(250, 240, "健康状况:生病");}else{outtextxy(250, 240, "健康状况:良好");}Nage = mypet.geta();FlushMouseMsgBuffer();MOUSEMSG h;while (f == 0){h = GetMouseMsg();switch (h.uMsg){case WM_LBUTTONDOWN:{if (h.x > 208 && h.x < 298 && h.y>280 && h.y < 380){if (a[c_count].food < 1){char s[10];InputBox(s, 10, "食物不够,是否购买:y:前往商店,n:返回");if (strcmp(s, "y") == 0){shop();}if (strcmp(s, "n") == 0){pet_message();}}if (b[c_count].step < 5){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_dog();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.feed();b[c_count].step = mypet.getst();a[c_count].food--;b[c_count].age++;b[c_count].health--;b[c_count].hunger = mypet.geth();b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_dog();}}if (h.x > 460 && h.x < 540 && h.y < 380 && h.y>280){if (a[c_count].water < 1){char s[10];InputBox(s, 10, "饮料不够,是否购买:1:前往商店,2:返回");int r;sscanf(s, "%d", &r);if (r == 1){shop();}if (r == 2){pet_message();}}if (b[c_count].step < 3){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_dog();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.drink();b[c_count].step = mypet.getst();a[c_count].water--;b[c_count].age++;b[c_count].health--;b[c_count].hunger++;b[c_count].thirst = mypet.gett();b[c_count].mood--;FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_dog();}}if (h.x > 712 && h.x < 785 && h.y < 380 && h.y>280){if (b[c_count].step < 3){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_dog();}if (strcmp(s, "n") == 0){pet_message();}}else {mypet.touch(w);b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health = mypet.gethe();b[c_count].hunger = mypet.geth();b[c_count].thirst = mypet.gett();b[c_count].mood = mypet.getm();FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_dog();}}if (h.x > 954 && h.x < 1040 && h.y < 380 && h.y>280){if (b[c_count].step < 8){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_dog();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.fun(w);b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health = mypet.gethe();b[c_count].hunger++;b[c_count].thirst++;b[c_count].mood = mypet.getm();FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_dog();}}if (h.x > 40 && h.x < 160 && h.y < 660 && h.y>560){pet_message();}if (h.x > 570 && h.x < 700 && h.y < 660 && h.y>560){if (b[c_count].step < 10){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_dog();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.doctor();b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health--;b[c_count].hunger = mypet.geth();b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_dog();}}if (h.x > 1100 && h.x < 1240 && h.y < 660 && h.y>560){b[c_count].step = b[c_count].step + 10;b[c_count].age++;b[c_count].health--;b[c_count].hunger++;b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("小狗.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_dog();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}}}
}
void raise_cat()
{initgraph(1280, 720);loadimage(NULL, _T("宠物互动.jpg"));int f = 0;ur a[M];int i = 0;int g;FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);int m = 0;pets b[M];FILE* fp_1;fp_1 = fopen("小猫.txt", "rb");if (fp_1 == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp_1)){fread(&b[m], sizeof(struct pets), 1, fp_1);m++;}fclose(fp_1);pet mypet(b[c_count].age, b[c_count].hunger, b[c_count].thirst, b[c_count].mood, b[c_count].health, b[c_count].step, b[c_count].life);int life, date, w;int emg, Nstep, Nage;setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));TCHAR s1[5];TCHAR s2[5];_stprintf(s2, _T("%d"), a[c_count].water);        // 高版本 VC 推荐使用 _stprintf_s 函数_stprintf(s1, _T("%d"), a[c_count].food);outtextxy(208, 440, "(");outtextxy(238, 440, "X");outtextxy(288, 440, ")");outtextxy(460, 440, "(");outtextxy(490, 440, "X");outtextxy(540, 440, ")");outtextxy(258, 440, s1);outtextxy(510, 440, s2);life = mypet.getl();date = mypet.geta();if (date == life){char s[10];InputBox(s, 10, "宠物已死亡,y:重新领养,n:返回");if (strcmp(s, "y") == 0){b[c_count].age = 1;b[c_count].health = 10;b[c_count].hunger = 2;b[c_count].mood = 2;b[c_count].thirst = 2;b[c_count].step = 20;FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);}if (strcmp(s, "n") == 0){pet_message();}}if (b[c_count].health < -10){char s[10];InputBox(s, 10, "宠物已病死,y:重新领养,n:返回");if (strcmp(s, "y") == 0){b[c_count].age = 1;b[c_count].health = 10;b[c_count].hunger = 2;b[c_count].mood = 2;b[c_count].thirst = 2;b[c_count].step = 20;FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);}if (strcmp(s, "n") == 0){pet_message();}}else{for (date = mypet.geta(); date < life; date++){w = weather();                  //调用天气函数t = t % 3;                        //t为控制时间整形period(t);                    //调用时间函数Nstep = mypet.getst();setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));outtextxy(150, 240, "你的宠物:");outtextxy(420, 240, "你的步数:");TCHAR s[5];_stprintf(s, _T("%d"), Nstep);        // 高版本 VC 推荐使用 _stprintf_s 函数outtextxy(520, 240, s);if (b[c_count].health < -7){outtextxy(250, 240, "健康状况:生病");}else{outtextxy(250, 240, "健康状况:良好");}Nage = mypet.geta();FlushMouseMsgBuffer();MOUSEMSG h;while (f == 0){h = GetMouseMsg();switch (h.uMsg){case WM_LBUTTONDOWN:{if (h.x > 208 && h.x < 298 && h.y>280 && h.y < 380){if (a[c_count].food < 1){char s[10];InputBox(s, 10, "食物不够,是否购买:y:前往商店,n:返回");if (strcmp(s, "y") == 0){shop();}if (strcmp(s, "n") == 0){pet_message();}}if (b[c_count].step < 5){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_cat();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.feed();b[c_count].step = mypet.getst();a[c_count].food--;b[c_count].age++;b[c_count].health--;b[c_count].hunger = mypet.geth();b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_cat();}}if (h.x > 460 && h.x < 540 && h.y < 380 && h.y>280){if (a[c_count].water < 1){char s[10];InputBox(s, 10, "饮料不够,是否购买:1:前往商店,2:返回");int r;sscanf(s, "%d", &r);if (r == 1){shop();}if (r == 2){pet_message();}}if (b[c_count].step < 3){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_cat();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.drink();b[c_count].step = mypet.getst();a[c_count].water--;b[c_count].age++;b[c_count].health--;b[c_count].hunger++;b[c_count].thirst = mypet.gett();b[c_count].mood--;FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_cat();}}if (h.x > 712 && h.x < 785 && h.y < 380 && h.y>280){if (b[c_count].step < 3){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_cat();}if (strcmp(s, "n") == 0){pet_message();}}else {mypet.touch(w);b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health = mypet.gethe();b[c_count].hunger = mypet.geth();b[c_count].thirst = mypet.gett();b[c_count].mood = mypet.getm();FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_cat();}}if (h.x > 954 && h.x < 1040 && h.y < 380 && h.y>280){if (b[c_count].step < 8){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_cat();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.fun(w);b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health = mypet.gethe();b[c_count].hunger++;b[c_count].thirst++;b[c_count].mood = mypet.getm();FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_cat();}}if (h.x > 40 && h.x < 160 && h.y < 660 && h.y>560){pet_message();}if (h.x > 570 && h.x < 700 && h.y < 660 && h.y>560){if (b[c_count].step < 10){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_cat();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.doctor();b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health--;b[c_count].hunger = mypet.geth();b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_cat();}}if (h.x > 1100 && h.x < 1240 && h.y < 660 && h.y>560){b[c_count].step = b[c_count].step + 10;b[c_count].age++;b[c_count].health--;b[c_count].hunger++;b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("小猫.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_cat();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}}}
}
void raise_pikaqiu()
{initgraph(1280, 720);loadimage(NULL, _T("宠物互动.jpg"));int f = 0;ur a[M];int i = 0;int g;FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);int m = 0;pets b[M];FILE* fp_1;fp_1 = fopen("皮卡丘.txt", "rb");if (fp_1 == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp_1)){fread(&b[m], sizeof(struct pets), 1, fp_1);m++;}fclose(fp_1);pet mypet(b[c_count].age, b[c_count].hunger, b[c_count].thirst, b[c_count].mood, b[c_count].health, b[c_count].step, b[c_count].life);int life, date, w;int emg, Nstep, Nage;setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));TCHAR s1[5];TCHAR s2[5];_stprintf(s2, _T("%d"), a[c_count].water);        // 高版本 VC 推荐使用 _stprintf_s 函数_stprintf(s1, _T("%d"), a[c_count].food);outtextxy(208, 440, "(");outtextxy(238, 440, "X");outtextxy(288, 440, ")");outtextxy(460, 440, "(");outtextxy(490, 440, "X");outtextxy(540, 440, ")");outtextxy(258, 440, s1);outtextxy(510, 440, s2);life = mypet.getl();date = mypet.geta();if (date == life){char s[10];InputBox(s, 10, "宠物已死亡,y:重新领养,n:返回");if (strcmp(s, "y") == 0){b[c_count].age = 1;b[c_count].health = 10;b[c_count].hunger = 2;b[c_count].mood = 2;b[c_count].thirst = 2;b[c_count].step = 20;FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);}if (strcmp(s, "n") == 0){pet_message();}}if (b[c_count].health < -10){char s[10];InputBox(s, 10, "宠物已病死,y:重新领养,n:返回");if (strcmp(s, "y") == 0){b[c_count].age = 1;b[c_count].health = 10;b[c_count].hunger = 2;b[c_count].mood = 2;b[c_count].thirst = 2;b[c_count].step = 20;FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);}if (strcmp(s, "n") == 0){pet_message();}}else{for (date = mypet.geta(); date < life; date++){w = weather();                  //调用天气函数t = t % 3;                        //t为控制时间整形period(t);                    //调用时间函数Nstep = mypet.getst();setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));outtextxy(150, 240, "你的宠物:");outtextxy(420, 240, "你的步数:");TCHAR s[5];_stprintf(s, _T("%d"), Nstep);        // 高版本 VC 推荐使用 _stprintf_s 函数outtextxy(520, 240, s);if (b[c_count].health < -7){outtextxy(250, 240, "健康状况:生病");}else{outtextxy(250, 240, "健康状况:良好");}Nage = mypet.geta();FlushMouseMsgBuffer();MOUSEMSG h;while (f == 0){h = GetMouseMsg();switch (h.uMsg){case WM_LBUTTONDOWN:{if (h.x > 208 && h.x < 298 && h.y>280 && h.y < 380){if (a[c_count].food < 1){char s[10];InputBox(s, 10, "食物不够,是否购买:y:前往商店,n:返回");if (strcmp(s, "y") == 0){shop();}if (strcmp(s, "n") == 0){pet_message();}}if (b[c_count].step < 5){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_pikaqiu();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.feed();b[c_count].step = mypet.getst();a[c_count].food--;b[c_count].age++;b[c_count].health--;b[c_count].hunger = mypet.geth();b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_pikaqiu();}}if (h.x > 460 && h.x < 540 && h.y < 380 && h.y>280){if (a[c_count].water < 1){char s[10];InputBox(s, 10, "饮料不够,是否购买:1:前往商店,2:返回");int r;sscanf(s, "%d", &r);if (r == 1){shop();}if (r == 2){pet_message();}}if (b[c_count].step < 3){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_pikaqiu();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.drink();b[c_count].step = mypet.getst();a[c_count].water--;b[c_count].age++;b[c_count].health--;b[c_count].hunger++;b[c_count].thirst = mypet.gett();b[c_count].mood--;FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_pikaqiu();}}if (h.x > 712 && h.x < 785 && h.y < 380 && h.y>280){if (b[c_count].step < 3){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_pikaqiu();}if (strcmp(s, "n") == 0){pet_message();}}else {mypet.touch(w);b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health = mypet.gethe();b[c_count].hunger = mypet.geth();b[c_count].thirst = mypet.gett();b[c_count].mood = mypet.getm();FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_pikaqiu();}}if (h.x > 954 && h.x < 1040 && h.y < 380 && h.y>280){if (b[c_count].step < 8){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_pikaqiu();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.fun(w);b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health = mypet.gethe();b[c_count].hunger++;b[c_count].thirst++;b[c_count].mood = mypet.getm();FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_pikaqiu();}}if (h.x > 40 && h.x < 160 && h.y < 660 && h.y>560){pet_message();}if (h.x > 570 && h.x < 700 && h.y < 660 && h.y>560){if (b[c_count].step < 10){char s[10];InputBox(s, 10, "点数不够,是否确定:y:确定,n:返回");if (strcmp(s, "y") == 0){raise_pikaqiu();}if (strcmp(s, "n") == 0){pet_message();}}else{mypet.doctor();b[c_count].step = mypet.getst();b[c_count].age++;b[c_count].health--;b[c_count].hunger = mypet.geth();b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_pikaqiu();}}if (h.x > 1100 && h.x < 1240 && h.y < 660 && h.y>560){b[c_count].step = b[c_count].step + 10;b[c_count].age++;b[c_count].health--;b[c_count].hunger++;b[c_count].thirst++;b[c_count].mood--;FILE* FP;FP = fopen("皮卡丘.txt", "wb");for (int j = 0; j < m; j++){fwrite(&b[j], sizeof(struct ul), 1, FP);}fclose(FP);FILE* FP_1;FP_1 = fopen("user.txt", "wb");for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP_1);}fclose(FP_1);t++;raise_pikaqiu();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}}}
}
void play()
{initgraph(1280, 720);loadimage(NULL, _T("宠物信息.jpg"));char q[10];InputBox(q, 10, "选择需要饲养的宠物:“1.小狗,2.小猫,3.皮卡丘,4.返回”");int r;sscanf(q, "%d", &r);if (r == 1){raise_dog();}if (r == 2){raise_cat();}if (r == 3){raise_pikaqiu();}if (r == 4){pet_message();}
}
void instruction()
{initgraph(1280, 720);loadimage(NULL, _T("饲养说明.jpg"));int f = 0;FlushMouseMsgBuffer();MOUSEMSG m;while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 240 && m.x < 330 && m.y>490 && m.y < 580){pet_message();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}
}
void pet_message()
{initgraph(1280, 720);loadimage(NULL, _T("宠物信息.jpg"));int f = 0;int i = 0;int m = 0;int n = 0;int k = 0;// 读取图片至绘图窗口setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));outtextxy(415, 135, "饲养说明");outtextxy(765, 130, "开始互动");ur a[M];pets b[M], c[M], x[M];FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);FILE* fp_1;fp_1 = fopen("小狗.txt", "rb");if (fp_1 == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp_1)){fread(&b[m], sizeof(struct pets), 1, fp_1);m++;}fclose(fp_1);FILE*fp_2;fp_2 = fopen("小猫.txt", "rb");if (fp_2 == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp_2)){fread(&c[n], sizeof(struct pets), 1, fp_2);n++;}fclose(fp_2);FILE*fp_3;fp_3 = fopen("皮卡丘.txt", "rb");if (fp_3 == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp_3)){fread(&x[k], sizeof(struct pets), 1, fp_3);k++;}fclose(fp_3);for (int j = 0; j < m; j++){if (b[j].id == c_count){setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));outtextxy(400, 360, "年龄:");outtextxy(480, 360, "天");outtextxy(550, 360, "健康指数:");outtextxy(700, 360, "寿命:");outtextxy(780, 360, "天");outtextxy(400, 400, "饥饿值:");outtextxy(550, 400, "口渴值:");outtextxy(700, 400, "心情指数:");outtextxy(850, 400, "行动点数:");TCHAR s1[5];TCHAR s2[5];TCHAR s3[5];TCHAR s4[5];TCHAR s5[5];TCHAR s6[5];TCHAR s7[5];_stprintf(s1, _T("%d"), b[j].age);outtextxy(460, 360, s1);_stprintf(s2, _T("%d"), b[j].health);outtextxy(650, 360, s2);_stprintf(s3, _T("%d"), b[j].life);outtextxy(760, 360, s3);_stprintf(s4, _T("%d"), b[j].hunger);outtextxy(490, 400, s4);_stprintf(s5, _T("%d"), b[j].thirst);outtextxy(630, 400, s5);_stprintf(s6, _T("%d"), b[j].mood);outtextxy(800, 400, s6);_stprintf(s7, _T("%d"), b[j].step);outtextxy(950, 400, s7); break;}if (j == m-1){setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(40, 0, _T("黑体"));outtextxy(460, 380, "未领养");}}setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));for (int j = 0; j < n; j++){if (c[j].id == c_count){setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));outtextxy(400, 200, "年龄:");outtextxy(480, 200, "天");outtextxy(550, 200, "健康指数:");outtextxy(700, 200, "寿命:");outtextxy(780, 200, "天");outtextxy(400, 240, "饥饿值:");outtextxy(550, 240, "口渴值:");outtextxy(700, 240, "心情指数:");outtextxy(850, 240, "行动点数:");TCHAR s8[5];TCHAR s9[5];TCHAR s10[5];TCHAR s11[5];TCHAR s12[5];TCHAR s13[5];TCHAR s14[5];_stprintf(s8, _T("%d"), c[j].age);outtextxy(460, 200, s8);_stprintf(s9, _T("%d"), c[j].health);outtextxy(650, 200, s9);_stprintf(s10, _T("%d"), c[j].life);outtextxy(760, 200, s10);_stprintf(s11, _T("%d"), c[j].hunger);outtextxy(490, 240, s11);_stprintf(s12, _T("%d"), c[j].thirst);outtextxy(630, 240, s12);_stprintf(s13, _T("%d"), c[j].mood);outtextxy(800, 240, s13);_stprintf(s14, _T("%d"), c[j].step);outtextxy(950, 240, s14); break;}if(j==n-1){setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(40, 0, _T("黑体"));outtextxy(460, 220, "未领养"); }}setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));for (int j = 0; j < k; j++){if (x[j].id == c_count){setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));outtextxy(400, 520, "年龄:");outtextxy(480, 520, "天");outtextxy(550, 520, "健康指数:");outtextxy(700, 520, "寿命:");outtextxy(780, 520, "天");outtextxy(400, 560, "饥饿值:");outtextxy(550, 560, "口渴值:");outtextxy(700, 560, "心情指数:");outtextxy(850, 560, "行动点数:");TCHAR s8[5];TCHAR s9[5];TCHAR s10[5];TCHAR s11[5];TCHAR s12[5];TCHAR s13[5];TCHAR s14[5];_stprintf(s8, _T("%d"), x[j].age);outtextxy(460, 520, s8);_stprintf(s9, _T("%d"), x[j].health);outtextxy(650, 520, s9);_stprintf(s10, _T("%d"), x[j].life);outtextxy(760, 520, s10);_stprintf(s11, _T("%d"), x[j].hunger);outtextxy(490, 560, s11);_stprintf(s12, _T("%d"), x[j].thirst);outtextxy(630, 560, s12);_stprintf(s13, _T("%d"), x[j].mood);outtextxy(800, 560, s13);_stprintf(s14, _T("%d"), x[j].step);outtextxy(950, 560, s14); break;}if(j==k-1){setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(40, 0, _T("黑体"));outtextxy(460, 560, "未领养"); }}FlushMouseMsgBuffer();MOUSEMSG h;while (f == 0){h = GetMouseMsg();switch (h.uMsg){case WM_LBUTTONDOWN:{if (h.x > 415 && h.x < 535 && h.y>30 && h.y < 135){instruction();}if (h.x > 765 && h.x < 885 && h.y < 135 && h.y>30){play();}if (h.x > 0 && h.x < 100 && h.y < 720 && h.y>600){petmenu();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}
}
void save_dog()
{ur a[M];int i = 0;FILE *Fp;Fp = fopen("user.txt", "rb");if (Fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(Fp)){fread(&a[i], sizeof(struct ul), 1, Fp);i++;}fclose(Fp);pets b;b.sd = 1;b.id = c_count;FILE*fp;fp = fopen("小狗.txt", "ab");if (fp == NULL){printf("fail to open the file! \n");exit(0);}fwrite(&b, sizeof(struct pets), 1, fp);fclose(fp);
}
void save_cat()
{ur a[M];int i = 0;FILE *Fp;Fp = fopen("user.txt", "rb");if (Fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(Fp)){fread(&a[i], sizeof(struct ul), 1, Fp);i++;}fclose(Fp);pets b;b.sd = 2;b.id = c_count;FILE*fp;fp = fopen("小猫.txt", "ab");if (fp == NULL){printf("fail to open the file! \n");exit(0);}fwrite(&b, sizeof(struct pets), 1, fp);fclose(fp);
}
void save_pikaqiu()
{ur a[M];int i = 0;FILE *Fp;Fp = fopen("user.txt", "rb");if (Fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(Fp)){fread(&a[i], sizeof(struct ul), 1, Fp);i++;}fclose(Fp);pets b;b.sd = 3;b.id = c_count;FILE*fp;fp = fopen("皮卡丘.txt", "ab");if (fp == NULL){printf("fail to open the file! \n");exit(0);}fwrite(&b, sizeof(struct pets), 1, fp);fclose(fp);
}
void adopt()
{initgraph(1000, 561);int f = 0;// 读取图片至绘图窗口loadimage(NULL, _T("领养.jpg"));ur a[M];int i = 0;int j = 0;int r = 0;char n[10];FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);FILE *FP;FP = fopen("user.txt", "wb");FlushMouseMsgBuffer();MOUSEMSG m;while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 200 && m.x < 300 && m.y>321 && m.y < 451){if (a[c_count].sd == 0){a[c_count].sd = 1;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_dog();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 1){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 2){a[c_count].sd = 4;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_dog();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 3){a[c_count].sd = 5;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_dog();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 4){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 5){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 6){a[c_count].sd = 7;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_dog();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 7){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}}if (m.x > 480 && m.x < 580 && m.y < 451 && m.y>321){if (a[c_count].sd == 0){a[c_count].sd = 2;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_cat();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 2){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 1){a[c_count].sd = 4;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_cat();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 3){a[c_count].sd = 6;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_cat();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 4){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 6){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 5){a[c_count].sd = 7;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_cat();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 7){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}}if (m.x > 750 && m.x < 850 && m.y < 451 && m.y>321){if (a[c_count].sd == 0){a[c_count].sd = 3;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_pikaqiu();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 3){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 1){a[c_count].sd = 5;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_pikaqiu();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 2){a[c_count].sd = 6;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_pikaqiu();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 5){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 6){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 4){a[c_count].sd = 7;a[c_count].number++;for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);save_pikaqiu();}fclose(FP);InputBox(n, 10, "领养成功,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}if (a[c_count].sd == 7){for (j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "已经拥有该宠物,是否继续领养 :1.继续  2.返回");sscanf(n, "%d", &r);if (r == 1){adopt();}else{petmenu();}}}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}
}
void petmenu()
{initgraph(774, 773);int f = 0;// 读取图片至绘图窗口loadimage(NULL, _T("imp3.jpg"));setbkmode(TRANSPARENT);settextcolor(WHITE);settextstyle(40, 0, _T("黑体"));TCHAR s2[] = _T("领养宠物");TCHAR s3[] = _T("查看宠物");TCHAR s4[] = _T("饲养说明");TCHAR s5[] = _T("商店");TCHAR s6[] = _T("返回");outtextxy(150, 100, s2);outtextxy(150, 230, s3);outtextxy(150, 355, s4);outtextxy(150, 480, s5);outtextxy(150, 615, s6);FlushMouseMsgBuffer();MOUSEMSG m;while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 150 && m.x < 310 && m.y>100 && m.y < 140){adopt();}if (m.x > 150 && m.x < 310 && m.y < 270 && m.y>230){pet_message();}if (m.x > 150 && m.x < 310 && m.y < 395 && m.y>355){instruction();}if (m.x > 150 && m.x < 230 && m.y < 520 && m.y>480){shop();}if (m.x > 150 && m.x < 230 && m.y < 655 && m.y>615){menu();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}
}
void Recharge_money()
{int i = 0;ur a[M];char n[10];int r = 0;int h = 0;FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);FILE *FP;FP = fopen("user.txt", "wb");InputBox(n, 10, "请输入充值的金额");sscanf(n, "%d", &r);a[c_count].money = a[c_count].money + r;for (int j = 0; j < i; j++){fwrite(&a[j], sizeof(struct ul), 1, FP);}fclose(FP);InputBox(n, 10, "充值成功! :1.继续  2.返回");sscanf(n, "%d", &h);if (h == 1){Recharge_money();}else{menu();}
}
void information()
{initgraph(1000, 471);int f = 0;int i = 0;ur a[M];// 读取图片至绘图窗口loadimage(NULL, _T("用户信息.jpg"));setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(50, 0, _T("黑体"));TCHAR s2[] = _T("用户信息!");outtextxy(360, 40, s2);setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));TCHAR s3[] = _T("账号:");TCHAR s4[] = _T("金钱:");TCHAR s5[] = _T("宠物数量:");TCHAR s6[] = _T("拥有的宠物:");TCHAR s9[] = _T("没有宠物");TCHAR s10[] = _T("小狗");TCHAR s11[] = _T("小猫");TCHAR s12[] = _T("皮卡丘");TCHAR s13[] = _T("小狗,小猫");TCHAR s14[] = _T("小狗,皮卡丘");TCHAR s15[] = _T("小猫,皮卡丘");TCHAR s16[] = _T("小狗,小猫,皮卡丘");outtextxy(260, 150, s3);outtextxy(260, 220, s4);outtextxy(200, 290, s5);outtextxy(170, 360, s6);FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}while (!feof(fp)){fread(&a[i], sizeof(struct ul), 1, fp);i++;}fclose(fp);outtextxy(470, 150, a[c_count].count);TCHAR s7[5];_stprintf(s7, _T("%d"), a[c_count].money);        // 高版本 VC 推荐使用 _stprintf_s 函数outtextxy(470, 220, s7);TCHAR s8[5];_stprintf(s8, _T("%d"), a[c_count].number);outtextxy(470, 290, s8);if (a[c_count].sd == 0){outtextxy(470, 360, s9);}if (a[c_count].sd == 1){outtextxy(470, 360, s10);}if (a[c_count].sd == 2){outtextxy(470, 360, s11);}if (a[c_count].sd == 3){outtextxy(470, 360, s12);}if (a[c_count].sd == 4){outtextxy(470, 360, s13);}if (a[c_count].sd == 5){outtextxy(470, 360, s14);}if (a[c_count].sd == 6){outtextxy(470, 360, s15);}if (a[c_count].sd == 7){outtextxy(470, 360, s16);}FlushMouseMsgBuffer();MOUSEMSG m;while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 440 && m.x < 500 && m.y>400 && m.y < 471){menu();}break;}}}
}
void menu()
{initgraph(928, 527);int f = 0;// 读取图片至绘图窗口loadimage(NULL, _T("menu.jpg"));setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(70, 0, _T("黑体"));TCHAR s2[] = _T("WELCOME!");outtextxy(314, 40, s2);setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(20, 0, _T("黑体"));TCHAR s3[] = _T("领养宠物");TCHAR s4[] = _T("充值金币");TCHAR s5[] = _T("账户信息");TCHAR s6[] = _T("返回主界面");outtextxy(412, 186, s3);outtextxy(412, 235, s4);outtextxy(412, 289, s5);outtextxy(412, 342, s6);FlushMouseMsgBuffer();MOUSEMSG m;while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 412 && m.x < 492 && m.y>186 && m.y < 206){petmenu();}if (m.x > 412 && m.x < 492 && m.y < 255 && m.y>235){Recharge_money();}if (m.x > 412 && m.x < 492 && m.y < 309 && m.y>289){information();}if (m.x > 412 && m.x < 492 && m.y < 362 && m.y>342){enter();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}
}
void enter()
{// 绘图环境初始化initgraph(660, 371);int f = 0;// 读取图片至绘图窗口loadimage(NULL, _T("imp1.jpg"));setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));TCHAR s2[] = _T("登录");outtextxy(350, 147, s2);TCHAR s3[] = _T("注册");outtextxy(350, 220, s3);TCHAR s4[] = _T("退出");outtextxy(350, 293, s4);settextstyle(20, 0, _T("黑体"));TCHAR s1[] = _T("快来领养你的第一个宠物吧!");outtextxy(250, 80, s1);IMAGE img1;loadimage(&img1, _T("imp2.jpg"));setfillstyle(BS_DIBPATTERN, NULL, &img1);solidrectangle(220, 148, 263, 185);solidrectangle(220, 222, 263, 258);solidrectangle(220, 296, 263, 331);FlushMouseMsgBuffer();MOUSEMSG m;while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 350 && m.x < 400 && m.y>148 && m.y < 185){login();}if (m.x > 350 && m.x < 400 && m.y < 258 && m.y>222){regist();}if (m.x > 350 && m.x < 400 && m.y < 331 && m.y>296){exit(0);}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}_getch();closegraph();
}
void login()
{initgraph(660, 371);loadimage(NULL, _T("imp1.jpg"));setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));TCHAR s1[] = _T("用户登录!");outtextxy(270, 80, s1);ur a, b;c_count = 0;char n[10];char i_1[1];FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}fread(&b, sizeof(struct ul), 1, fp);InputBox(a.count, 10, "请输入账号");while (1){if (strcmp(a.count, b.count) == 0){break;}else{if (!feof(fp)){fread(&b, sizeof(struct ul), 1, fp);c_count++;}else{fclose(fp);InputBox(n, 10, "账号未注册,是否注册:“1.注册  2.回到主页面”");int r;sscanf(n, "%d", &r);if (r == 1){regist();}else{enter();}}}}InputBox(a.password, 7, "请输入密码");if (strcmp(a.password, b.password) == 0){fclose(fp);menu();}else{fclose(fp);InputBox(n, 10, "密码错误,是否继续:“1.继续  2.回到主页面”");int j;sscanf(i_1, "%d", &j);if (j == 1){login();}else{enter();}}
}
void regist()
{initgraph(660, 371);loadimage(NULL, _T("imp1.jpg"));setbkmode(TRANSPARENT);settextcolor(BLACK);settextstyle(30, 0, _T("黑体"));TCHAR s1[] = _T("用户注册!");outtextxy(270, 80, s1);int f = 0;char n[10];ur a, b;//结构体 the_users 重命名定义FILE *fp;fp = fopen("user.txt", "rb");if (fp == NULL){printf("fail to open the file! \n");exit(0);}fread(&b, sizeof(struct ul), 1, fp); //读入一个结构体字符块到bInputBox(a.count, 10, "请输入账号");while (1){if (strcmp(a.count, b.count) != 0) /*如果两串不相等*/{if (!feof(fp))    /*如果未到文件尾*/{fread(&b, sizeof(struct ul), 1, fp);}elsebreak;}else{fclose(fp);InputBox(n, 10, "用户名已存在,是否继续:“1.继续  2.回到主页面”");int r;sscanf(n, "%d", &r);if (r == 1){regist();}else{enter();}}}InputBox(a.password, 7, "请输入六位密码");fp = fopen("user.txt", "ab");if (fp == NULL){printf("fail to open the file! \n");exit(0);}fwrite(&a, sizeof(struct ul), 1, fp);fclose(fp);initgraph(815, 520);loadimage(NULL, _T("注册.jpg"));setfillcolor(BLUE);FlushMouseMsgBuffer();MOUSEMSG m;while (f == 0){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:{if (m.x > 80 && m.x < 110 && m.y>400 && m.y < 470){enter();}if (m.x > 665 && m.x < 695 && m.y < 470 && m.y>400){login();}break;}case WM_RBUTTONDOWN:{f = 0;break;}}}_getch();closegraph();
}
int main()
{enter();return 0;
}

实训程序:用户登陆注册,实现宠物的领养相关推荐

  1. python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码)

    python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码) 最近学校实训,用两天时间做了一个python小程序*机房收费管理系统*,一款基于tkinter使用p ...

  2. 用户登陆注册功能(PHP)

    对于许多web应用程序而言,数据库都是其核心所在.数据库几乎可以用来存储所有你想要检索和更新的任何信息,下面是一个通过PDO操作MySQL数据库来实现用户登陆注册功能的案例 效果图展示: 这是登陆和注 ...

  3. jsp的MVC模式设计用户登陆注册

    jsp的MVC模式设计用户登陆注册 用户登陆功能 1.实验内容 2.实验步骤 3.实验结果 4.实验分析 用户登陆功能 通过设计用户的登陆和注册,来学习jsp的MVC模式,熟练掌握MVC模式各部分的内 ...

  4. 借助小程序云开发实现小程序的登陆注册功能

    小程序云开发讲解视频:https://edu.csdn.net/course/detail/9604 有了云开发我们不仅可以方便的获取到用户的openid,还可以通过云开发的数据库来存储用户信息,进而 ...

  5. jsp简介mysql_jsp+servlet+mysql简单实现用户登陆注册

    原码,项目中遇到的错误,解决方法,文章最后有链接可以获取 项目简介 *有的网友说在修改和删除时会触发error,建议各位不要去把用户名命名为中文! 功能描述 登陆,注册,用户一览表,修改,删除,添加, ...

  6. jsp+servlet+mysql简单实现用户登陆注册

    原码,项目中遇到的错误,解决方法,文章最后有链接可以获取 项目简介 功能描述 登陆,注册,用户一览表,修改,删除,添加,模糊查询和精确查询 采用的技术及环境 JSP:前端的信息展示 Servlet:业 ...

  7. 15_常用API_第15天(Object、String、StringBuffer、用户登陆注册)

    今日内容介绍 1.Object 2.String 3.StringBuilder 01API概念 A:API(Application Programming Interface) 应用程序编程接口 B ...

  8. 常用API(Object、String、StringBuffer、用户登陆注册)

    常用API 今日内容介绍 u Object u String u StringBuilder 第1章 Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象 ...

  9. android天气预报实训程序清单,Android天气预报项目

    1.项目效果图: 2.主页面MainActivity代码如下: MainActivity.java package com.qianfeng.weather; import android.conte ...

最新文章

  1. 运行ORB-SLAM笔记_使用篇(二)
  2. JavaScript如何声明对象、函数以及对象中的函数(即方法)
  3. 又一次内存分配失败(关于overcommit_memory)
  4. mysql闪退或者can not connect 127.0.0.1
  5. 2021 跨境电商发展关键词:品牌化、独立站、多渠道精细化
  6. mysql查询时有两条一模一样的结果应该只显示一条
  7. 一文看懂集群、分布式与负载均衡的关系
  8. Linux日志安全分析技巧
  9. Java多线程:解决生产者/消费者模式
  10. 计算机专业技能水平如何提升,市计算机:提升技能水平
  11. codeforces 598C C. Nearest vectors(极角排序)
  12. 春眠不觉晓,读书醒醒脑|世界读书日送送送10本硬核书
  13. 用matlab s函数 阶梯,如何用matlab使用函数式M文件计算s=n!,要具体的步骤。谢谢...
  14. 单机实验mysql的主从备份(master slaver)
  15. 笔记本电脑上没有计算机软件,笔记本电脑无需安装软件,无需联网,也可无线投影在投影仪上显示...
  16. 转:Provisioning profile XXXX can't be found
  17. 【深度学习】神经网络的学习过程
  18. 密室逃脱2 古堡迷城
  19. Android学习之Pair类 (android.util.Pair )
  20. Lemur的disk index

热门文章

  1. FigDraw 4. SCI 文章绘图之散点图 (Scatter)
  2. 谈谈对WiFi P2P的理解
  3. 电路中的三极管和MOS管
  4. 全球及中国手机摄像头音圈马达(VCM)驱动芯片行业研究及十四五规划分析报告
  5. 凌科芯安软件加密锁论手机APP智能产品安全
  6. Redflag SP3 介绍
  7. Notion从入门到卸载(上)
  8. 谭铁牛院士荣获国际模式识别最高奖
  9. 雅迪电动车解锁(实测无效)
  10. 电脑清空回收站怎么恢复回来,恢复回收站经典教学