From 637a6a31f563e421f44e1d51cda224642bbf1173 Mon Sep 17 00:00:00 2001 From: unknown <9697148+antio2@user.noreply.gitee.com> Date: Thu, 23 Dec 2021 19:13:34 +0800 Subject: [PATCH 01/27] fix autoopt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复了自动扫描的问题: 自动扫描到地雷不会返回BOOM的问题 --- .gitignore | 1 + include/mine_map.h | 2 +- include/opt.h | 2 +- src/opt.c | 24 +++++++++++++++--------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index c34b03e..b7316f1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ test/ target/ MineSweeper.zip +.git/ \ No newline at end of file diff --git a/include/mine_map.h b/include/mine_map.h index a1e4aa3..78e6305 100644 --- a/include/mine_map.h +++ b/include/mine_map.h @@ -43,7 +43,7 @@ typedef struct map{ #define MY_MID 16 #define MY_HARD 30 -#define NUM_EASY 30 +#define NUM_EASY 10 #define NUM_MID 40 #define NUM_HARD 99 diff --git a/include/opt.h b/include/opt.h index fd1a83b..e855e6b 100644 --- a/include/opt.h +++ b/include/opt.h @@ -94,7 +94,7 @@ int fnOptMidClick(int x,int y,map *m); * @param y * @param m 地图指针 */ -void fnOptAuto(int x,int y, map *m); +int fnOptAuto(int x,int y, map *m); /** * @brief 用于统计周围旗子数量 diff --git a/src/opt.c b/src/opt.c index 6b45af9..668afa6 100644 --- a/src/opt.c +++ b/src/opt.c @@ -2,7 +2,8 @@ #include "../include/opt.h" #include "../include/map.h" #include -#include +#include +#include int opt(map *m, opt_t opt) { @@ -79,7 +80,8 @@ int opt_flag_count(map *map, int x, int y) int fnOptLeftClick(int x, int y, map *m) { - if(!m -> generated) Setmine(m, x, y, (unsigned int)time(NULL)); + if (!m->generated) + Setmine(m, x, y, (unsigned int)time(NULL)); /** * @brief 地图当前状态 * @@ -109,7 +111,7 @@ int fnOptLeftClick(int x, int y, map *m) m->stage[x][y] = COVERED; if (opt_count(m, x, y) == 0) - fnOptAuto(x, y, m); + return fnOptAuto(x, y, m); return ALLOWED; } @@ -155,14 +157,15 @@ int fnOptMidClick(int x, int y, map *m) return UNALLOWED; if (opt_count(m, x, y) != opt_flag_count(m, x, y)) return UNALLOWED; - fnOptAuto(x, y, m); - return ALLOWED; + return fnOptAuto(x, y, m); } -void fnOptAuto(int x, int y, map *m) +int fnOptAuto(int x, int y, map *m) { + int flag = 0; if (m->autobook[x][y] == 1) - return; + return 0; + m->autobook[x][y] = 1; for (int i = -1; i <= 1; i++) { @@ -177,11 +180,14 @@ void fnOptAuto(int x, int y, map *m) { m->stage[fx][fy] = COVERED; if (opt_count(m, fx, fy) == 0) - fnOptAuto(fx, fy, m); + if (fnOptAuto(fx, fy, m) == 1) + flag = 1; + if (m->mineMap[fx][fy] == 1) + flag = 1; } } } - return; + return flag ? BOOM : ALLOWED; } bool opt_is_scuess(map m) -- Gitee From 2c8d2b9c8dcbc050079779c2406ac17b69f303f2 Mon Sep 17 00:00:00 2001 From: unknown <9697148+antio2@user.noreply.gitee.com> Date: Thu, 23 Dec 2021 21:01:44 +0800 Subject: [PATCH 02/27] fix: fix click logic --- include/mine_map.h | 2 +- src/PainterEngine_Application.c | 407 +++++++++++++------------------- src/opt.c | 2 +- 3 files changed, 165 insertions(+), 246 deletions(-) diff --git a/include/mine_map.h b/include/mine_map.h index 78e6305..976b77a 100644 --- a/include/mine_map.h +++ b/include/mine_map.h @@ -48,4 +48,4 @@ typedef struct map{ #define NUM_HARD 99 - +#define DEBUG diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 6515071..c0a71b2 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -1,64 +1,56 @@ #include "PainterEngine_Application.h" -#include -#include -#include -#include -#include"../include/map.h" -#include"../include/mine_map.h" -#include"../include/opt.h" - - +#include +#include +#include +#include +#include "../include/map.h" +#include "../include/mine_map.h" +#include "../include/opt.h" PX_Application App; - - - -PX_Object* root = PX_NULL;//定义根类型 (px必须) -PX_Object* cellbutton[10][10];//定义了十个小格子的按钮 - -PX_Object* beginbutton;//开始的按钮(在welcome里面 -PX_Object* rankingbutton;//排行榜按钮(在welcome里面 -PX_Object* menubutton;//首页的菜单栏 - -PX_Object* easymode; -PX_Object* midmode; -PX_Object* hardmode; - -PX_Object* title;//标题的图片框(在welcome里面 -px_texture titlepicture;//标题的图片(在welcome里面 -PX_Object* potatoboom;//标题的图片框(在welcome里面 -px_texture potatoboompicture;//标题的图片(在welcome里面 -PX_Object* towelcomebutton;//开始的按钮(在welcome里面 - -PX_Object* firstprize;//第一的图片框(在rank里面 -px_texture firstprizepicture;//第一的图片(in rank -PX_Object* secondprize;//第一的图片框(在rank里面 -px_texture secondprizepicture;//第一的图片(in rank -PX_Object* thirdprize;//第一的图片框(在rank里面 -px_texture thirdprizepicture;//第一的图片(in rank -PX_Object* ranktitle;//第一的图片框(在rank里面 -px_texture ranktitlepicture;//第一的图片(in rank - -px_shape flag;//旗帜的图片(in game +PX_Object *root = PX_NULL; //定义根类型 (px必须) +PX_Object *cellbutton[40][40]; //定义了十个小格子的按钮 + +PX_Object *beginbutton; //开始的按钮(在welcome里面 +PX_Object *rankingbutton; //排行榜按钮(在welcome里面 +PX_Object *menubutton; //首页的菜单栏 + +PX_Object *easymode; +PX_Object *midmode; +PX_Object *hardmode; + +PX_Object *title; //标题的图片框(在welcome里面 +px_texture titlepicture; //标题的图片(在welcome里面 +PX_Object *potatoboom; //标题的图片框(在welcome里面 +px_texture potatoboompicture; //标题的图片(在welcome里面 +PX_Object *towelcomebutton; //开始的按钮(在welcome里面 + +PX_Object *firstprize; //第一的图片框(在rank里面 +px_texture firstprizepicture; //第一的图片(in rank +PX_Object *secondprize; //第一的图片框(在rank里面 +px_texture secondprizepicture; //第一的图片(in rank +PX_Object *thirdprize; //第一的图片框(在rank里面 +px_texture thirdprizepicture; //第一的图片(in rank +PX_Object *ranktitle; //第一的图片框(在rank里面 +px_texture ranktitlepicture; //第一的图片(in rank + +px_shape flag; //旗帜的图片(in game px_shape mine; opt_t cell[100][100]; -map* Map=NULL; -int mode=3; +map *Map = NULL; +int mode = 3; ///函数声明 void WELCOME(); void RANK(); void Gameinit(); - +void Gamefail(); void Gamenow(); -void Lclickcell(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -void Rclickcell(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -void Mclickcell(PX_Object* pObject, PX_Object_Event e, px_void* ptr); - - - +void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +void Rclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); ///////////////////////////////////////////////////////////// //辅助函数(不看 @@ -71,259 +63,229 @@ px_void(*ProcessFunc)(PX_Object*, PX_Object_Event e, px_void* ptr);//点击左/ */ ///////////////////////////////////////////////////// - - //游戏正在进行的组件 - - - - - - - - - - - - - - - - - - void Gameinit() { ///变换界面就删除原页面的object!(由Painterengine provide)/// -//删除之前的按钮(如果有 - if (root){ + //删除之前的按钮(如果有 + if (root) + { PX_ObjectDelete(root); } //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// -//初始化map + //初始化map Map = CreateMap(mode); //生成cellbutton - printf("debug"); for (int i = 1; i <= Map->mx; i++) { for (int j = 1; j <= Map->my; j++) { cell[j][i].y = i; - cell[j][i].x = j;//j行i列 x行y - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51-51, j * 51-51, 47, 47, " ", PX_NULL); + cell[j][i].x = j; // j行i列 x行y + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); //生成结束cellbutton } - }printf("debug"); + } } +int failed = 0; - - - - - - -void Gamenow() +void Gamenow() { - printf("debug"); - if (root) { PX_ObjectDelete(root); } //重新创建根对象 - + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); - ///变换界面就删除原页面的object!(由Painterengine provide)/// - //printf("debug"); + // printf("debug"); for (int i = 1; i <= Map->mx; i++) { for (int j = 1; j <= Map->my; j++) { cell[j][i].y = i; - cell[j][i].x = j;//j行i列 x行y列 - - if (Map->stage[j][i] == MARKED) { - - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51-51, j * 51-51, 47, 47, "?", PX_NULL); + cell[j][i].x = j; // j行i列 x行y列 + + if (Map->stage[j][i] == MARKED) + { + + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, "?", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); } if (Map->stage[j][i] == FLAGED) - { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51-51, j * 51-51, 47, 47, " ", PX_NULL); - PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); - PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); - PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); - PX_Object_PushButtonSetShape(cellbutton[j][i], &flag); + { + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); + PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); + PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); + PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); + PX_Object_PushButtonSetShape(cellbutton[j][i], &flag); } if (Map->stage[j][i] == UNCOVERED) { - //printf("uncover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51-51, j * 51-51, 47, 47, " ", PX_NULL); + // printf("uncover%d %d\n", j, i); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); - } if (Map->stage[j][i] == COVERED) { - //printf("cover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51-51, j * 51-51, 47, 47, " ", PX_NULL); + // printf("cover%d %d\n", j, i); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); - if (opt_count(Map, j, i) == 0) { - PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(32, 255, 255, 255));;//标记为黑色按钮 - + if (opt_count(Map, j, i) == 0) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(32, 255, 255, 255)); + ; //标记为黑色按钮 } - else { + else + { int count = opt_count(Map, j, i); - char text[2]; + char text[2]; sprintf(text, "%d", count); - if(count) PX_Object_PushButtonSetText(cellbutton[j][i], text); + if (count) + PX_Object_PushButtonSetText(cellbutton[j][i], text); } - } } } return; - } ////////////////////////////////////////////////////////////////////////////////// -void Gamewin() { - printf("you win"); +void Gamewin() +{ } -void Gamefail() { - printf("debug2"); - for (int i = 1; i < Map->mx; i++) +void Gamefail() +{ + failed = 1; + for (int i = 1; i <= Map->mx; i++) { - for (int j = 1; j < Map->my; j++) { - if (Map->mineMap[j][i] == 1) { + for (int j = 1; j <= Map->my; j++) + { + if (Map->mineMap[j][i] == 1) + { PX_Object_PushButtonSetText(cellbutton[j][i], " "); PX_Object_PushButtonSetShape(cellbutton[j][i], &mine); PX_Object_PushButtonSetTextColor(cellbutton[j][i], PX_COLOR(255, 255, 0, 0)); } - PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE);//使得所有按钮无效,无法继续点击! + PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE); //使得所有按钮无效,无法继续点击! } } - - - printf("you lose"); } - - - - ////////////////////////////////////////////////////////////////////////////////// -void Lclickcell(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ +void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ if (PX_ObjectIsCursorInRegion(pObject, e)) { - - opt_t* pcell = (opt_t*)ptr; + + opt_t *pcell = (opt_t *)ptr; int temp; - temp= fnOptLeftClick(pcell->x, pcell->y, Map); - - if (Map->mineMap[pcell->x][pcell->y] == 1) + temp = fnOptLeftClick(pcell->x, pcell->y, Map); + + if (temp==BOOM) { Gamefail(); - }//是雷就失败 - else if (opt_is_scuess(*Map)) { + } //是雷就失败 + else if (opt_is_scuess(*Map)) + { Gamewin(); } - else + else { - - Gamenow(); + + Gamenow(); } - } } -void Rclickcell(PX_Object* pObject, PX_Object_Event e, px_void* ptr) +void Rclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - - opt_t* pcell = (opt_t*)ptr; + + opt_t *pcell = (opt_t *)ptr; int temp; temp = fnOptRightClick(pcell->x, pcell->y, Map); - if(opt_is_scuess(*Map)) + if (opt_is_scuess(*Map)) { Gamewin(); } - else { + else + { Gamenow(); - } - } - } - -void Mclickcell(PX_Object* pObject, PX_Object_Event e, px_void* ptr) +void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - opt_t* pcell = (opt_t*)ptr; + opt_t *pcell = (opt_t *)ptr; int temp; temp = fnOptMidClick(pcell->x, pcell->y, Map); + if (temp == BOOM) + { + Gamefail(); + } + else if (opt_is_scuess(*Map)) + { + Gamewin(); + } + else + { + Gamenow(); + } - - Gamenow(); - } } ///////////////////////////////////////////////////////////////////////// -void ceasy(PX_Object* pObject, PX_Object_Event e, px_void* ptr) +void ceasy(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { mode = 1; Gameinit(); - } - } -void cmid(PX_Object* pObject, PX_Object_Event e, px_void* ptr) +void cmid(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - - Gameinit(); + Gameinit(); } - } -void chard(PX_Object* pObject, PX_Object_Event e, px_void* ptr) +void chard(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { - - mode = 1; - Gameinit(); - - + mode = 1; + Gameinit(); } -void modechoose() { +void modechoose() +{ ///变换界面就删除原页面的object!(由Painterengine provide)/// -//删除之前的按钮(如果有 + //删除之前的按钮(如果有 if (root) { PX_ObjectDelete(root); @@ -332,7 +294,6 @@ void modechoose() { root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 218, 200, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy, &easymode); @@ -343,33 +304,27 @@ void modechoose() { PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); } - - //////////////////////----------------------------------rank 组件 -void towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) +void towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { WELCOME(); } - - void RANK() { - ///变换界面就删除原页面的object!(由Painterengine provide)/// -//删除之前的按钮(如果有 + ///变换界面就删除原页面的object!(由Painterengine provide)/// + //删除之前的按钮(如果有 if (root) { PX_ObjectDelete(root); } //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); - ///变换界面就删除原页面的object!(由Painterengine provide)/// - + ///变换界面就删除原页面的object!(由Painterengine provide)/// towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 400, 228, 64, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - //第一二三名排版 firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 90, 75, 75, &firstprizepicture); PX_ObjectRegisterEvent(firstprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); @@ -379,40 +334,27 @@ void RANK() PX_ObjectRegisterEvent(thirdprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); ranktitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 20, 210, 75, &ranktitlepicture); PX_ObjectRegisterEvent(ranktitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - } //////////////////////----------------------------------rank 组件 - - - - - - - //////////////////////----------------------------------welcome 组件 - - - -px_void beginclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr)//开始按钮的跳转 +px_void beginclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //开始按钮的跳转 { modechoose(); - - + printf("NOW begin!\n"); } -px_void rankingclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr)//排名按钮的跳转 +px_void rankingclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //排名按钮的跳转 { RANK(); printf("Is ranking\t"); } - -void WELCOME()//初始化函数 +void WELCOME() //初始化函数 { - ///变换界面就删除原页面的object!(由Painterengine provide)/// + ///变换界面就删除原页面的object!(由Painterengine provide)/// //删除之前的按钮(如果有 if (root) { @@ -420,101 +362,78 @@ void WELCOME()//初始化函数 } //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); - ///变换界面就删除原页面的object!/// - - + ///变换界面就删除原页面的object!/// //初始化两个按钮 beginbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 145, 400, 228, 64, "begin now", PX_NULL); PX_ObjectRegisterEvent(beginbutton, PX_OBJECT_EVENT_EXECUTE, beginclick, &beginbutton); - rankingbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 490, 400, 228, 64, "RANK", PX_NULL); PX_ObjectRegisterEvent(rankingbutton, PX_OBJECT_EVENT_EXECUTE, rankingclick, &rankingbutton); - //初始化界面的汉字 - //PX_FontModuleDrawText(&App.runtime.RenderSurface, PX_NULL, 395, 200, PX_ALIGN_MIDTOP, "TEXT", PX_COLOR(250, 0, 0, 0)); + // PX_FontModuleDrawText(&App.runtime.RenderSurface, PX_NULL, 395, 200, PX_ALIGN_MIDTOP, "TEXT", PX_COLOR(250, 0, 0, 0)); //展示静态文本框 - //title=PX_Object_LabelCreate(&App.runtime.mp_ui, root, 395, 175, 256, 64, "Minesweeper", PX_NULL, PX_COLOR(255 ,106, 106, 0)); - //PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY,PX_NULL, PX_NULL); + // title=PX_Object_LabelCreate(&App.runtime.mp_ui, root, 395, 175, 256, 64, "Minesweeper", PX_NULL, PX_COLOR(255 ,106, 106, 0)); + // PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY,PX_NULL, PX_NULL); - title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800,800, &titlepicture ); + title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800, 800, &titlepicture); PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); potatoboom = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 2, 415, 110, 105, &potatoboompicture); PX_ObjectRegisterEvent(potatoboom, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - //这是MENU - PX_Object_Menu_Item* pItem; - menubutton=PX_Object_MenuCreate(&App.runtime.mp_ui, root,10,10,100,PX_NULL); - - pItem = PX_Object_MenuAddItem(menubutton,PX_Object_MenuGetRootItem(menubutton),"【Menu",PX_NULL,PX_NULL); - PX_Object_MenuAddItem(menubutton,pItem, "【Color", PX_NULL, PX_NULL); + PX_Object_Menu_Item *pItem; + menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 100, PX_NULL); + + pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【Menu", PX_NULL, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "【Color", PX_NULL, PX_NULL); // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 - - } /// ///////////////////////////////////////-----------------------welcome组件 - - - - - -px_bool PX_ApplicationInitialize(PX_Application* pApp, px_int screen_width, px_int screen_height)//初始化函数(px内部) +px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_int screen_height) //初始化函数(px内部) { PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height); - //PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &titlepicture, "titlepicture.traw");//加载图片!! - //PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &shape_mine, "mine.traw");//加载图片!! - //PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &shape_mine, "mine.traw");//加载图片!! - + // PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &titlepicture, "titlepicture.traw");//加载图片!! + // PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &shape_mine, "mine.traw");//加载图片!! + // PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &shape_mine, "mine.traw");//加载图片!! //以下为欢迎页图片 - - PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &titlepicture, "assets\\titlepicture2.traw");//加载图片!! + + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &titlepicture, "assets\\titlepicture2.traw"); //加载图片!! PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &potatoboompicture, "assets\\potatoboom.traw"); -//注意文件地址!放在project里面,为何不能用相对地址??? ↑ -//以下为排行版页图片 - PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &firstprizepicture, "assets\\firstprize.traw");//加载图片!! + //注意文件地址!放在project里面,为何不能用相对地址??? ↑ + //以下为排行版页图片 + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &firstprizepicture, "assets\\firstprize.traw"); //加载图片!! PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &secondprizepicture, "assets\\secondprize.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &thirdprizepicture, "assets\\thirdprize.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &ranktitlepicture, "assets\\ranktitlepicture.traw"); - - - - PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine, "assets\\minepicture.traw"); - - - WELCOME();//直接前往welcome函数 + + WELCOME(); //直接前往welcome函数 return PX_TRUE; } -px_void PX_ApplicationUpdate(PX_Application* pApp, px_dword elpased) +px_void PX_ApplicationUpdate(PX_Application *pApp, px_dword elpased) { - } -px_void PX_ApplicationRender(PX_Application* pApp, px_dword elpased) +px_void PX_ApplicationRender(PX_Application *pApp, px_dword elpased) { - px_surface* pRenderSurface = &pApp->runtime.RenderSurface; + px_surface *pRenderSurface = &pApp->runtime.RenderSurface; PX_RuntimeRenderClear(&pApp->runtime, PX_OBJECT_UI_DEFAULT_BACKGROUNDCOLOR); PX_ObjectRender(pRenderSurface, root, elpased); - - - } -px_void PX_ApplicationPostEvent(PX_Application* pApp, PX_Object_Event e) +px_void PX_ApplicationPostEvent(PX_Application *pApp, PX_Object_Event e) { PX_ApplicationEventDefault(&pApp->runtime, e); PX_ObjectPostEvent(root, e); - } diff --git a/src/opt.c b/src/opt.c index 668afa6..2a452da 100644 --- a/src/opt.c +++ b/src/opt.c @@ -180,7 +180,7 @@ int fnOptAuto(int x, int y, map *m) { m->stage[fx][fy] = COVERED; if (opt_count(m, fx, fy) == 0) - if (fnOptAuto(fx, fy, m) == 1) + if (fnOptAuto(fx, fy, m) == BOOM) flag = 1; if (m->mineMap[fx][fy] == 1) flag = 1; -- Gitee From 70262de722d46ec7d1788a1438a075e5c47870af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Fri, 24 Dec 2021 00:29:27 +0800 Subject: [PATCH 03/27] =?UTF-8?q?1=E6=96=B0=E5=A2=9E=E4=BA=86=E2=80=9C?= =?UTF-8?q?=E9=87=8D=E5=BC=80=E2=80=9D=EF=BC=88=E5=9C=A8=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AD=A5=E5=90=8E=E7=94=9F=E6=88=90=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=9C=A8=E7=9B=B8=E5=90=8C=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=E9=87=8D=E6=96=B0=E5=BC=80=E5=A7=8B=EF=BC=89=E5=92=8C?= =?UTF-8?q?=E2=80=9C=E5=A4=B1=E8=B4=A5=E5=90=8E=E8=BF=94=E5=9B=9E=E2=80=9D?= =?UTF-8?q?=EF=BC=88=E5=A4=B1=E8=B4=A5=E5=90=8E=E7=82=B9=E5=87=BB=E8=BF=99?= =?UTF-8?q?=E4=B8=AA=E6=8C=89=E9=92=AE=E5=8F=AF=E4=BB=A5=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=AC=A2=E8=BF=8E=E9=A1=B5=EF=BC=89=20=202.=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BA=86=E6=88=90=E5=8A=9F=E7=9A=84=E6=B6=88=E6=81=AF=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E9=A1=B5=E9=9D=A2=EF=BC=8C=E5=9C=A8=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E9=A1=B5=E9=9D=A2=E7=82=B9ok->=E5=86=8D?= =?UTF-8?q?=E7=8E=A9=E4=B8=80=E6=AC=A1=EF=BC=88=E7=9B=B4=E6=8E=A5=E5=88=B0?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=A8=A1=E5=BC=8F=E7=95=8C=E9=9D=A2=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E7=82=B9cancel->=E8=BF=94=E5=9B=9E=E4=B8=BB=E5=87=BD?= =?UTF-8?q?=E6=95=B0=203.=E4=B8=80=E4=BA=9B=E7=BE=8E=E5=B7=A5=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PainterEngine_Application.c | 87 +++++++++++++++++++++++++++------ 1 file changed, 72 insertions(+), 15 deletions(-) diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index c0a71b2..f7e9bbe 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -34,10 +34,14 @@ PX_Object *thirdprize; //第一的图片框(在rank里面 px_texture thirdprizepicture; //第一的图片(in rank PX_Object *ranktitle; //第一的图片框(在rank里面 px_texture ranktitlepicture; //第一的图片(in rank +PX_Object *failpic; +px_texture failpicture;//失败的图片与图片框 px_shape flag; //旗帜的图片(in game px_shape mine; + + opt_t cell[100][100]; map *Map = NULL; int mode = 3; @@ -51,7 +55,8 @@ void Gamenow(); void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void Rclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); - +void towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +void restart(PX_Object* pObject, PX_Object_Event e, px_void* ptr); ///////////////////////////////////////////////////////////// //辅助函数(不看 /* @@ -79,13 +84,19 @@ void Gameinit() //初始化map Map = CreateMap(mode); //生成cellbutton + int buttonlong; + switch(mode) { + case 1:buttonlong=50;break; + case 2:buttonlong=31;break; + case 3:buttonlong=10;break; + }//根据大小生成buttoncell for (int i = 1; i <= Map->mx; i++) { for (int j = 1; j <= Map->my; j++) { cell[j][i].y = i; cell[j][i].x = j; // j行i列 x行y - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); @@ -108,6 +119,12 @@ void Gamenow() ///变换界面就删除原页面的object!(由Painterengine provide)/// // printf("debug"); + int buttonlong;//定义长与宽 + switch(mode) { + case 1:buttonlong=50;break; + case 2:buttonlong=31;break; + case 3:buttonlong=10;break; + } for (int i = 1; i <= Map->mx; i++) { for (int j = 1; j <= Map->my; j++) @@ -118,23 +135,26 @@ void Gamenow() if (Map->stage[j][i] == MARKED) { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, "?", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, "?", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); } if (Map->stage[j][i] == FLAGED) { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); + //if(mode==1){ PX_Object_PushButtonSetShape(cellbutton[j][i], &flag); + //未实现的代码 周五写 不同的mode对应flag的不同大小。 + //} } if (Map->stage[j][i] == UNCOVERED) { // printf("uncover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); @@ -142,14 +162,14 @@ void Gamenow() if (Map->stage[j][i] == COVERED) { // printf("cover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * 51 - 51, j * 51 - 51, 47, 47, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); if (opt_count(Map, j, i) == 0) { PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(32, 255, 255, 255)); - ; //标记为黑色按钮 + //标记为黑色按钮 } else { @@ -161,18 +181,42 @@ void Gamenow() } } } - } + }PX_Object* restartbutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 600,350,150,40, "Restart", PX_NULL); + PX_ObjectRegisterEvent(restartbutton, PX_OBJECT_EVENT_EXECUTE, restart, PX_NULL); return; } +void restart(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ + Gameinit(); +} +////////////////////////////////////////////////////////////////////////////////// +px_void* playagain(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + printf("重开游戏中请稍后"); + Gameinit(); +}//重新开始 +px_void* towelcomeclick2(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + printf("正在返回主页"); + WELCOME(); +}//返回欢迎页 ////////////////////////////////////////////////////////////////////////////////// void Gamewin() -{ +{printf("you win"); + for (int i = 1; i <= Map->mx; i++) + { + for (int j = 1; j <= Map->my; j++) { + PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE);//使得所有按钮无效,无法继续点击! + } + } + PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + + PX_Object_MessageBoxAlertYesNo(winmessage, "You Win!\nCongradulation!\nDo you want to paly again?", playagain, PX_NULL, towelcomeclick2, PX_NULL); + } void Gamefail() { failed = 1; + for (int i = 1; i <= Map->mx; i++) { for (int j = 1; j <= Map->my; j++) @@ -180,12 +224,24 @@ void Gamefail() if (Map->mineMap[j][i] == 1) { PX_Object_PushButtonSetText(cellbutton[j][i], " "); + //if(mode==1){ PX_Object_PushButtonSetShape(cellbutton[j][i], &mine); + //未实现的代码(周五写)根据mode调整雷的图片(shape)的大小,flag同理 + //} PX_Object_PushButtonSetTextColor(cellbutton[j][i], PX_COLOR(255, 255, 0, 0)); } PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE); //使得所有按钮无效,无法继续点击! } + } + printf("You lose"); + failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 570, 20, 200, 80, &failpicture); + PX_ObjectRegisterEvent(failpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + + PX_Object* returnwelcomebutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 600,400,150,40, "Return", PX_NULL); + PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick2, PX_NULL);//创建一个return按钮使得玩家可以返回主界面选择难度 + + } ////////////////////////////////////////////////////////////////////////////////// @@ -271,7 +327,7 @@ void cmid(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - + mode=2; Gameinit(); } } @@ -279,7 +335,7 @@ void cmid(PX_Object *pObject, PX_Object_Event e, px_void *ptr) void chard(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { - mode = 1; + mode = 3; Gameinit(); } void modechoose() @@ -294,13 +350,13 @@ void modechoose() root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 218, 200, 228, 64, "easy", PX_NULL); + easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy, &easymode); - midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 300, 228, 64, "middle", PX_NULL); + midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 250, 228, 64, "middle", PX_NULL); PX_ObjectRegisterEvent(midmode, PX_OBJECT_EVENT_EXECUTE, cmid, &midmode); - hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 418, 400, 228, 64, "hard", PX_NULL); + hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); } @@ -406,12 +462,13 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &titlepicture, "assets\\titlepicture2.traw"); //加载图片!! PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &potatoboompicture, "assets\\potatoboom.traw"); - //注意文件地址!放在project里面,为何不能用相对地址??? ↑ + //注意文件地址! //以下为排行版页图片 PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &firstprizepicture, "assets\\firstprize.traw"); //加载图片!! PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &secondprizepicture, "assets\\secondprize.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &thirdprizepicture, "assets\\thirdprize.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &ranktitlepicture, "assets\\ranktitlepicture.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &failpicture, "assets\\failpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine, "assets\\minepicture.traw"); -- Gitee From 5b0be09927f9dbb64a8521be0b2738ee208d0bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AD=90=E8=AF=BA?= <1219935161@qq.com> Date: Fri, 24 Dec 2021 00:45:24 +0800 Subject: [PATCH 04/27] fix: fix mid click --- src/opt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/opt.c b/src/opt.c index 2a452da..d2e0764 100644 --- a/src/opt.c +++ b/src/opt.c @@ -4,7 +4,7 @@ #include #include #include - +#define OPT_DEBUG 0 int opt(map *m, opt_t opt) { /** @@ -162,9 +162,12 @@ int fnOptMidClick(int x, int y, map *m) int fnOptAuto(int x, int y, map *m) { + #if OPT_DEBUG + printf("\nAuto\n"); + #endif int flag = 0; if (m->autobook[x][y] == 1) - return 0; + return ALLOWED; m->autobook[x][y] = 1; for (int i = -1; i <= 1; i++) -- Gitee From c021c33a834caf3539dc1521397401a300370e5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Fri, 24 Dec 2021 00:52:20 +0800 Subject: [PATCH 05/27] add restart return button and add sucess message --- assets/failpicture.traw | Bin 0 -> 64012 bytes src/PainterEngine_Application.c | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/failpicture.traw diff --git a/assets/failpicture.traw b/assets/failpicture.traw new file mode 100644 index 0000000000000000000000000000000000000000..cfb2d6a7eaab237b46da524b62275515c7fc6b41 GIT binary patch literal 64012 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 Date: Fri, 24 Dec 2021 11:42:54 +0800 Subject: [PATCH 06/27] =?UTF-8?q?1.fix=EF=BC=9A=E6=89=AB=E9=9B=B7=E5=90=8E?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=8E=92=E8=A1=8C=E7=89=88=E5=86=8D=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=8D=A1=E6=AD=BB=202.=E4=B8=BAmine=E5=92=8Cflag?= =?UTF-8?q?=E4=B8=AD=E7=AD=89=E6=A8=A1=E5=BC=8F=E5=9B=BE=E7=89=87=E5=81=9A?= =?UTF-8?q?=E4=BA=86=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/flag2picture.traw | Bin 0 -> 3376 bytes assets/mine2picture.traw | Bin 0 -> 3260 bytes src/PainterEngine_Application.c | 96 ++++++++++++++++++++++++-------- 3 files changed, 74 insertions(+), 22 deletions(-) create mode 100644 assets/flag2picture.traw create mode 100644 assets/mine2picture.traw diff --git a/assets/flag2picture.traw b/assets/flag2picture.traw new file mode 100644 index 0000000000000000000000000000000000000000..1d6b39a18f368c2322ec7aaebbd351aa77045810 GIT binary patch literal 3376 zcmWFuatxPcU|;}YY~V~91MA&nZgFgKv=V!e$P;ouk@wlXBwlrp9S@`U1)rqws{IGL zg;sXnOXQyVAc^LM2B6)4f&PE} zAc;HoemuVbHSNY}C&*qP2Kx68(C$4ClK7qfGcYhx!)`)$g8dA#JCXO-gCw4w+X)=F zk|WX1A=XZ?pTXhHbMs*`Z#*cy6Kx5aLQ?ER^7B7nI$w7`nMd<~Jp&V(kp#Kq*okEK z%lk<@Riyfv5<9`+oy7YO7}rPcC-EB+^dM9LrFO#ooWyg2UUmZW(m!Bcz7Dk8n;v!o z%a70ZlKA?crtydX?ISwxk{h<5a^i6^x5NKX24-UY2UACqoxuDF48!NZu*`cNBhC#o zgH)OnJAr*tO+jTdA$Cg}k@##ai^I4LB{M|%;ms`<7eE9THB8P4#C1w$;chpW|LyB~D nqhU*Wm=UYvegdx-sGh$a!>2;59!k}L+E7o^B)KRx2bX>T%+Mg< literal 0 HcmV?d00001 diff --git a/assets/mine2picture.traw b/assets/mine2picture.traw new file mode 100644 index 0000000000000000000000000000000000000000..ce3ec076d4fcde0b198eea1b9880d17263b75581 GIT binary patch literal 3260 zcmb`JUx-w76vuzFbMJ5VPh=EnJ9Gc+ENU5I;zsC8u^@p|4~gKzJ}41^1o;rAAhHE* z3HneHiVum&)Iivor3x=@#}-NC=U%ea_vvFbvL}KY8KsyZ84y zzwQdCa2c~jvn_NecHG6-pa6A`Jimac9xXtspbb(%?$Or zq1BfI?@C~sbD?9NWn2V%+H?8`WBu}Km5JZG9m}~s%ePGr+jm1p|HOD(=ER<7nd|Z4 z4)|ZqJ8IB(Gee%EPoclNTRhnZe+RL<6bqPt5#NyoOFbH`yXn!uF)Qf(6WIE1@vlDa zcCg_xH4dL&D3zXbRWDfYVDlDO_mF>U*!P%wU+js#Z}(;4;H9#yUy*mFQ|({{u71jQ z%rR^p@@#z)o06}O1KZdWI+?9yJM$uOoFtw2dXt)I^e0ht-NAoWR4+_!$%fyQd1rqj$JG8K_;?xFi*8%>+$4?^e(ywXl-&L&n&?E+ zp_ASU-jw7fijRHx|3OFM>Vp#75;aI}&m#wtFyZxhNDoMi1?iLJy8VXSv@P&?R%#xc zlyB*`h2vX;s{ekt(g(yd>(Sfsy3{-PMkgY^#{0|E1pdxm=lqZ7>PL?=82;xx*Vrtz zT6Fa~IitIkYF@9sKBS){j$eG+c(xuZeiuyED{}4xIdcR3Q4}A#72$N&%B;rbP2$)R zh1oCGV`4r5EG5|2xiD#`EwrFMc<(1rKMC z52=}`ZaI&Rz)`hBIk)seR7dov-cK)-q&}NrdXDj?22)U*NMR6>#`R~ z6XSVeINS_R=BMPW#4rA@`($5|ZmTu0#<2B!kT*9Z=|-_}ZlHfNa58z(9S7UbWk%t7 zSCUXKuS)I7p4wfk$ld2qyS~#Wr@*a9?M-rqa2|ff+_fYjC+EDZdQ5!9w*q@EmTGq* z@uSsKkbBPZS$P%g5y|f)XK<3p|6#cw^)$X+p03^fT4B|%N4*2j)WIS>^pW(~{r>%M zm-4cDE$b8L%_Coz_?Ok&>f~MQ1-Z1;?givFd`%PoF-Eyx%6;!B^FQ$Y8{glPzn2Sj p=WQogjkstage[j][i] == UNCOVERED) { @@ -224,10 +233,16 @@ void Gamefail() if (Map->mineMap[j][i] == 1) { PX_Object_PushButtonSetText(cellbutton[j][i], " "); - //if(mode==1){ + if(mode==1){ PX_Object_PushButtonSetShape(cellbutton[j][i], &mine); - //未实现的代码(周五写)根据mode调整雷的图片(shape)的大小,flag同理 - //} + } + if(mode==2){ + PX_Object_PushButtonSetShape(cellbutton[j][i], &mine2); + } + if(mode==3){ + PX_Object_PushButtonSetShape(cellbutton[j][i], &mine2); + } + //根据mode调整雷的图片(shape)的大小,flag同理【模式三暂未提供!!!!!!!!!先把那个bug解决了再说!!】 PX_Object_PushButtonSetTextColor(cellbutton[j][i], PX_COLOR(255, 255, 0, 0)); } PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE); //使得所有按钮无效,无法继续点击! @@ -266,7 +281,6 @@ void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) } else { - Gamenow(); } } @@ -345,9 +359,10 @@ void modechoose() if (root) { PX_ObjectDelete(root); + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); } //重新创建根对象 - root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); + ///变换界面就删除原页面的object!(由Painterengine provide)/// easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); @@ -363,7 +378,17 @@ void modechoose() //////////////////////----------------------------------rank 组件 void towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { - WELCOME(); + printf("debug2"); + + towelcomebutton->Visible=PX_FALSE; + firstprize ->Visible=PX_FALSE; + secondprize ->Visible=PX_FALSE; + thirdprize ->Visible=PX_FALSE; + ranktitle ->Visible=PX_FALSE; + + WELCOME2(); + + return ; } void RANK() @@ -380,6 +405,7 @@ void RANK() towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 400, 228, 64, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); + printf("debug1"); //第一二三名排版 firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 90, 75, 75, &firstprizepicture); @@ -397,15 +423,17 @@ void RANK() px_void beginclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //开始按钮的跳转 { - modechoose(); + printf("NOW begin!\n"); + modechoose(); } px_void rankingclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //排名按钮的跳转 { - RANK(); + printf("Is ranking\t"); + RANK(); } void WELCOME() //初始化函数 @@ -429,10 +457,7 @@ void WELCOME() //初始化函数 //初始化界面的汉字 - // PX_FontModuleDrawText(&App.runtime.RenderSurface, PX_NULL, 395, 200, PX_ALIGN_MIDTOP, "TEXT", PX_COLOR(250, 0, 0, 0)); - //展示静态文本框 - // title=PX_Object_LabelCreate(&App.runtime.mp_ui, root, 395, 175, 256, 64, "Minesweeper", PX_NULL, PX_COLOR(255 ,106, 106, 0)); - // PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY,PX_NULL, PX_NULL); + title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800, 800, &titlepicture); PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); @@ -440,15 +465,41 @@ void WELCOME() //初始化函数 PX_ObjectRegisterEvent(potatoboom, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); //这是MENU - PX_Object_Menu_Item *pItem; - menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 100, PX_NULL); + //PX_Object_Menu_Item *pItem; + //menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 100, PX_NULL); - pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【Menu", PX_NULL, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem, "【Color", PX_NULL, PX_NULL); + //pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【Menu", PX_NULL, PX_NULL); + //PX_Object_MenuAddItem(menubutton, pItem, "【Color", PX_NULL, PX_NULL); // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 } + + + + +void WELCOME2() //初始化函数///此函数用于debug:当先运行一次扫雷后再看排行版无法返回。此函数用于解决这个问题。 +{ + + + //初始化两个按钮 + beginbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 145, 400, 228, 64, "begin now", PX_NULL); + PX_ObjectRegisterEvent(beginbutton, PX_OBJECT_EVENT_EXECUTE, beginclick, &beginbutton); + + rankingbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 490, 400, 228, 64, "RANK", PX_NULL); + PX_ObjectRegisterEvent(rankingbutton, PX_OBJECT_EVENT_EXECUTE, rankingclick, &rankingbutton); + + //初始化界面的汉字 + + + + title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800, 800, &titlepicture); + PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + potatoboom = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 2, 415, 110, 105, &potatoboompicture); + PX_ObjectRegisterEvent(potatoboom, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + +} + /// ///////////////////////////////////////-----------------------welcome组件 px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_int screen_height) //初始化函数(px内部) @@ -471,8 +522,9 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &failpicture, "assets\\failpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); + PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag2, "assets\\flag2picture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine, "assets\\minepicture.traw"); - + PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine2, "assets\\mine2picture.traw"); WELCOME(); //直接前往welcome函数 return PX_TRUE; -- Gitee From fb820ba9281492e786f95d9c12a2ef97bad9ee54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Fri, 24 Dec 2021 16:22:48 +0800 Subject: [PATCH 07/27] =?UTF-8?q?bug=20fix:=E5=9B=B0=E9=9A=BE=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E5=8F=AF=E4=BB=A5=E8=BF=90=E8=A1=8C=E4=BA=86=EF=BC=88?= =?UTF-8?q?=E8=87=B3=E5=B0=91=E5=9C=A8=20=E6=88=91=E7=9A=84=E7=94=B5?= =?UTF-8?q?=E8=84=91=E4=B8=8A=E5=8F=AF=E4=BB=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PainterEngine_Application.c | 80 ++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 26 deletions(-) diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index fd9abc4..1d0fb5e 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -76,15 +76,19 @@ px_void(*ProcessFunc)(PX_Object*, PX_Object_Event e, px_void* ptr);//点击左/ void Gameinit() { - ///变换界面就删除原页面的object!(由Painterengine provide)/// - //删除之前的按钮(如果有 - if (root) - { - PX_ObjectDelete(root); - } + //easymode->Visible=PX_FALSE; + //midmode ->Visible=PX_FALSE; + //hardmode ->Visible=PX_FALSE; + //if (root) + //{ + // PX_ObjectDelete(root); +// } //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// + ///变换界面就删除原页面的object!(由Painterengine provide)/// + //删除之前的按钮(如果有 + //初始化map Map = CreateMap(mode); //生成cellbutton @@ -92,11 +96,11 @@ void Gameinit() switch(mode) { case 1:buttonlong=50;break; case 2:buttonlong=31;break; - case 3:buttonlong=10;break; + case 3:buttonlong=24;break; }//根据大小生成buttoncell - for (int i = 1; i <= Map->mx; i++) + for (int i = 1; i <= Map->my; i++) { - for (int j = 1; j <= Map->my; j++) + for (int j = 1; j <= Map->mx; j++) { cell[j][i].y = i; cell[j][i].x = j; // j行i列 x行y @@ -107,6 +111,7 @@ void Gameinit() //生成结束cellbutton } }printf("debug"); + return ; } int failed = 0; @@ -127,11 +132,11 @@ void Gamenow() switch(mode) { case 1:buttonlong=50;break; case 2:buttonlong=31;break; - case 3:buttonlong=10;break; + case 3:buttonlong=24;break; } - for (int i = 1; i <= Map->mx; i++) + for (int i = 1; i <= Map->my; i++) { - for (int j = 1; j <= Map->my; j++) + for (int j = 1; j <= Map->mx; j++) { cell[j][i].y = i; cell[j][i].x = j; // j行i列 x行y列 @@ -139,7 +144,7 @@ void Gamenow() if (Map->stage[j][i] == MARKED) { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, "?", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i* buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, "?", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); @@ -190,12 +195,20 @@ void Gamenow() } } } - }PX_Object* restartbutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 600,350,150,40, "Restart", PX_NULL); + } + px_int buttonx; + if(mode==3){ + buttonx=730; + }else{ + buttonx=600; + } + PX_Object* restartbutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,350,150,40, "Restart", PX_NULL); PX_ObjectRegisterEvent(restartbutton, PX_OBJECT_EVENT_EXECUTE, restart, PX_NULL); return; } void restart(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ + Gameinit(); } ////////////////////////////////////////////////////////////////////////////////// @@ -210,9 +223,9 @@ px_void* towelcomeclick2(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { ////////////////////////////////////////////////////////////////////////////////// void Gamewin() {printf("you win"); - for (int i = 1; i <= Map->mx; i++) + for (int i = 1; i <= Map->my; i++) { - for (int j = 1; j <= Map->my; j++) { + for (int j = 1; j <= Map->mx; j++) { PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE);//使得所有按钮无效,无法继续点击! } } @@ -226,9 +239,9 @@ void Gamefail() { failed = 1; - for (int i = 1; i <= Map->mx; i++) + for (int i = 1; i <= Map->my; i++) { - for (int j = 1; j <= Map->my; j++) + for (int j = 1; j <= Map->mx; j++) { if (Map->mineMap[j][i] == 1) { @@ -250,10 +263,23 @@ void Gamefail() } printf("You lose"); - failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 570, 20, 200, 80, &failpicture); + if(mode==3){ + failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 720, 20, 200, 80, &failpicture); + } + else{ + failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 570, 20, 200, 80, &failpicture); + } PX_ObjectRegisterEvent(failpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* returnwelcomebutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 600,400,150,40, "Return", PX_NULL); + px_int buttonx; + if(mode==3){ + buttonx=730; + }else{ + buttonx=600; + } + + PX_Object* returnwelcomebutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,400,150,40, "Return", PX_NULL); + PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick2, PX_NULL);//创建一个return按钮使得玩家可以返回主界面选择难度 @@ -348,9 +374,11 @@ void cmid(PX_Object *pObject, PX_Object_Event e, px_void *ptr) void chard(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { - - mode = 3; - Gameinit(); + if (PX_ObjectIsCursorInRegion(pObject, e)) + { + mode=3; + Gameinit(); + } } void modechoose() { @@ -365,13 +393,13 @@ void modechoose() ///变换界面就删除原页面的object!(由Painterengine provide)/// - easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); + easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 100, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy, &easymode); - midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 250, 228, 64, "middle", PX_NULL); + midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 200, 228, 64, "middle", PX_NULL); PX_ObjectRegisterEvent(midmode, PX_OBJECT_EVENT_EXECUTE, cmid, &midmode); - hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); + hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 300, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); } -- Gitee From 66b19b6e46ada21c6d2ed3866dbda7e3fce6bcb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Fri, 24 Dec 2021 22:35:25 +0800 Subject: [PATCH 08/27] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0openall=E6=8C=89?= =?UTF-8?q?=E9=92=AE=202.=E5=A2=9E=E5=8A=A0=E5=B8=AE=E5=8A=A9=E6=96=87?= =?UTF-8?q?=E6=A1=A3=203.=E6=88=90=E5=8A=9F=E6=8F=90=E7=A4=BA=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=BE=93=E5=85=A5=E5=A7=93=E5=90=8D=204.=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=B8=8D=E5=BF=85=E8=A6=81=E5=85=A8=E5=B1=80=E5=8F=98?= =?UTF-8?q?=E9=87=8F5.=E9=80=82=E9=85=8Dhard=206.=E5=B0=8F=E5=B0=8F?= =?UTF-8?q?=E7=BE=8E=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/cheerpicture.traw | Bin 0 -> 46668 bytes assets/flag3picture.traw | Bin 0 -> 2128 bytes assets/mine3picture.traw | Bin 0 -> 2036 bytes src/PainterEngine_Application.c | 346 +++++++++++++++++--------------- 4 files changed, 187 insertions(+), 159 deletions(-) create mode 100644 assets/cheerpicture.traw create mode 100644 assets/flag3picture.traw create mode 100644 assets/mine3picture.traw diff --git a/assets/cheerpicture.traw b/assets/cheerpicture.traw new file mode 100644 index 0000000000000000000000000000000000000000..d215e60263e798f9a002b453f737fa43e781b40e GIT binary patch literal 46668 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 f3BdX?k#`@czQnYdGLbWBl3aJw1o`O-gtCQ literal 0 HcmV?d00001 diff --git a/assets/mine3picture.traw b/assets/mine3picture.traw new file mode 100644 index 0000000000000000000000000000000000000000..9d65a685dee490c69715e2e4af8570a62ad5ee95 GIT binary patch literal 2036 zcmb7FTWA$W7@oQ_vnSSgX{t%HJF_RL8ni8GjTh)k)Y=kLgeon*c%ewJ(H26X4^8i_ zC0crcq9_WseUL&Q5{QN%RSyM~3WwIq*_qkR5ot>)K1-n#B!2&a1BcBC$1Hs8&h4A; z|K^{6U)`~3XDefD88DY;nz2VptC=J??Qc$$IOeoGo8s~58U@$$PfP0 z${ux**XOh-S|tqjxe*6)E4b&)#z|x8a^_#h+VnBD@DI(FApQ@H7JnHn{{{Db;I2{r zOEfnLn}TvA`=Ng=t*ggNUf#-!Zs^zt95PCLiTS6X=~$x0;RM>@!zU*6$DI-m+Sk?N z$@USiL7edH2YC6mi~PO>`{1lr(K}V%i->s`-b}hcd>aQ||7;p-x$i_Q2OXb5sja?GDx&=lKR3ii^-NN`BSyWWTGtE)-WxdvlA8#Ov_m7vR@AC`?7( zMz?ao5H;{twegD?9V!Q{o>5@Rw|{0*#mub%Iv&YXtNUs%=DUSKST z9KgL06OCXrA1n4S5eIyO3B}LwwT)t_eG-hp)6Z=eYrYz?rb-+wtl2ieWsLuc`DxG; zI?cz^NIX}|OW!5!ZH9&qZo+G5JxqB#2OLHI?}2}3V|be7cHp+k`xt&LO~YKTK@LAG z=#1#@5Vu9{WVvI+0-Z;|y^wN-yts)xXoMo_66HqRmW#kWiI{t4aOZOoJULDImonxf zXGY>soNojh^6#g68Aq*s0lZ_Towa1SsqSLzYjD3wIaR4Sfm~4rP|qrF`p&{eexA+} zYe!H6hNh7-S#F9e(eh=~w`--)Uryu1X+pUjb?>zq2<0o3ua$L?coyS7*}Uw^^47Lp zB!}SJZ%H7!V=Z=5oXE|IEO0iXsAs)N2VajIxnKe@P+*MLa%I1v!-Mt##CIBe`%H&i zNq!Yj!>XV*?#a`M=5Jw-3r_iixHGvdSG_j)=Rt1|YRgH~|4Ws9LVf^y?V|q|`c8mz y68Mzn%~qr8aZ?}p_&e$~}@7oUX%-_&Y^Je3y_CEk!O3K~< literal 0 HcmV?d00001 diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 1d0fb5e..9cdc4b4 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -12,30 +12,21 @@ PX_Application App; PX_Object *root = PX_NULL; //定义根类型 (px必须) PX_Object *cellbutton[40][40]; //定义了十个小格子的按钮 -PX_Object *beginbutton; //开始的按钮(在welcome里面 -PX_Object *rankingbutton; //排行榜按钮(在welcome里面 -PX_Object *menubutton; //首页的菜单栏 -PX_Object *easymode; -PX_Object *midmode; -PX_Object *hardmode; - -PX_Object *title; //标题的图片框(在welcome里面 px_texture titlepicture; //标题的图片(在welcome里面 -PX_Object *potatoboom; //标题的图片框(在welcome里面 px_texture potatoboompicture; //标题的图片(在welcome里面 -PX_Object *towelcomebutton; //开始的按钮(在welcome里面 - -PX_Object *firstprize; //第一的图片框(在rank里面 -px_texture firstprizepicture; //第一的图片(in rank -PX_Object *secondprize; //第一的图片框(在rank里面 -px_texture secondprizepicture; //第一的图片(in rank -PX_Object *thirdprize; //第一的图片框(在rank里面 -px_texture thirdprizepicture; //第一的图片(in rank -PX_Object *ranktitle; //第一的图片框(在rank里面 -px_texture ranktitlepicture; //第一的图片(in rank -PX_Object *failpic; + + + +px_texture firstprizepicture; //第一的图片(in rank +px_texture secondprizepicture; //第2的图片(in rank +px_texture thirdprizepicture; //第3的图片(in rank +px_texture ranktitlepicture; //排行版的图片(in rank + +PX_Object* failpic; px_texture failpicture;//失败的图片与图片框 +px_texture cheerpicture; + px_shape flag; px_shape flag2; @@ -58,9 +49,14 @@ void Gamenow(); void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void Rclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); -void towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +px_void* towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void restart(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -px_void* towelcomeclick2(PX_Object* pObject, PX_Object_Event e, px_void* ptr) ; +px_void* towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) ; +void openall(PX_Object* pObject, PX_Object_Event e, px_void* ptr); +void openhelp(px_void* userptr); +px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr); +px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr); + ///////////////////////////////////////////////////////////// //辅助函数(不看 /* @@ -76,35 +72,27 @@ px_void(*ProcessFunc)(PX_Object*, PX_Object_Event e, px_void* ptr);//点击左/ void Gameinit() { - //easymode->Visible=PX_FALSE; - //midmode ->Visible=PX_FALSE; - //hardmode ->Visible=PX_FALSE; - //if (root) - //{ - // PX_ObjectDelete(root); -// } //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - ///变换界面就删除原页面的object!(由Painterengine provide)/// - //删除之前的按钮(如果有 + //初始化map Map = CreateMap(mode); //生成cellbutton - int buttonlong; + int buttonlong,buttonmovedown; switch(mode) { - case 1:buttonlong=50;break; - case 2:buttonlong=31;break; - case 3:buttonlong=24;break; - }//根据大小生成buttoncell + case 1:buttonlong=50;buttonmovedown=0;break; + case 2:buttonlong=31;buttonmovedown=0;break; + case 3:buttonlong=24;buttonmovedown=50;break; + }//根据大小生成buttoncell,buttonlong代表button的宽度,buttonmovedone是对困难模式时按钮向下移动 for (int i = 1; i <= Map->my; i++) { for (int j = 1; j <= Map->mx; j++) { cell[j][i].y = i; cell[j][i].x = j; // j行i列 x行y - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); @@ -116,24 +104,20 @@ void Gameinit() int failed = 0; + + void Gamenow() { - if (root) - { - PX_ObjectDelete(root); - } - //重新创建根对象 - root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// // printf("debug"); - int buttonlong;//定义长与宽 + int buttonlong,buttonmovedown; switch(mode) { - case 1:buttonlong=50;break; - case 2:buttonlong=31;break; - case 3:buttonlong=24;break; - } + case 1:buttonlong=50;buttonmovedown=0;break; + case 2:buttonlong=31;buttonmovedown=0;break; + case 3:buttonlong=24;buttonmovedown=50;break; + }//根据大小生成buttoncell,buttonlong代表button的宽度,buttonmovedone是对困难模式时按钮向下移动(使得它不那么靠上) for (int i = 1; i <= Map->my; i++) { for (int j = 1; j <= Map->mx; j++) @@ -144,14 +128,14 @@ void Gamenow() if (Map->stage[j][i] == MARKED) { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i* buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, "?", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i* buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, "?", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); } if (Map->stage[j][i] == FLAGED) { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); @@ -161,14 +145,14 @@ void Gamenow() if(mode==2){ PX_Object_PushButtonSetShape(cellbutton[j][i], &flag2); }if(mode==3){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &flag2); + PX_Object_PushButtonSetShape(cellbutton[j][i], &flag3); } - //不同的mode对应flag的不同大小。其中模式三还未提供!!!!!! + //不同的mode对应flag的不同大小。 } if (Map->stage[j][i] == UNCOVERED) { // printf("uncover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); @@ -176,7 +160,7 @@ void Gamenow() if (Map->stage[j][i] == COVERED) { // printf("cover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, i * buttonlong-buttonlong, j * buttonlong-buttonlong, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); @@ -196,6 +180,7 @@ void Gamenow() } } } + //下为设置restart和open all 的按钮的语句 px_int buttonx; if(mode==3){ buttonx=730; @@ -203,39 +188,65 @@ void Gamenow() buttonx=600; } PX_Object* restartbutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,350,150,40, "Restart", PX_NULL); - PX_ObjectRegisterEvent(restartbutton, PX_OBJECT_EVENT_EXECUTE, restart, PX_NULL); + PX_ObjectRegisterEvent(restartbutton, PX_OBJECT_EVENT_EXECUTE, restart, PX_NULL);//重开本局,相同难度模式下 + PX_Object* openallbutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,300,150,40, "Open all", PX_NULL); + PX_ObjectRegisterEvent(openallbutton, PX_OBJECT_EVENT_EXECUTE, openall, PX_NULL);//打开所有格子 return; } void restart(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ - Gameinit(); + return; } + ////////////////////////////////////////////////////////////////////////////////// px_void* playagain(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { printf("重开游戏中请稍后"); Gameinit(); }//重新开始 -px_void* towelcomeclick2(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + +px_void* towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { printf("正在返回主页"); WELCOME(); -}//返回欢迎页 +}//返回欢迎页2(与towelcomeclick没有什么差别,主要是为了debug,如果把一些按钮按下调用的函数towelcome2换成towelcome,就会卡死) + +px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + PX_Object* recordname_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_NULL, congratulation, PX_NULL); +}//如果用户想输入名字就记录名字(因为消息对话框只能显示带有ok与cancel的界面,所以不能强制用户输入姓名) + +px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + PX_Object* winmessage3= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertYesNo(winmessage3, "Do you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); +}//为进入排行榜页面前三专门设置的祝福(免得太罗嗦,也免得输入名字的messagebox被吞掉)在recodename输入名字后调用本函数。 + ////////////////////////////////////////////////////////////////////////////////// -void Gamewin() -{printf("you win"); +void Gamewin()//游戏胜利 +{ + printf("you win"); for (int i = 1; i <= Map->my; i++) { - for (int j = 1; j <= Map->mx; j++) { + for (int j = 1; j <= Map->mx; j++) + { PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE);//使得所有按钮无效,无法继续点击! } } - PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertYesNo(winmessage, "You Win!\nCongradulation!\nDo you want to paly again?", playagain, PX_NULL, towelcomeclick2, PX_NULL); + if(mode==1)//如果能冲进前三,请求其输入名字,因为wjj还没有写函数,我就默认mode1的都进入了排行榜,会调用rank函数 + { + PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertYesNo(winmessage, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP THREE!!!\n May I know your name?", recordnameY, PX_NULL, congratulation, PX_NULL); + } + else { + PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertYesNo(winmessage, "Congradulation!\nYou Win!\nDo you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); + } + } -void Gamefail() + +void Gamefail()//游戏失败 { failed = 1; @@ -253,9 +264,9 @@ void Gamefail() PX_Object_PushButtonSetShape(cellbutton[j][i], &mine2); } if(mode==3){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &mine2); + PX_Object_PushButtonSetShape(cellbutton[j][i], &mine3); } - //根据mode调整雷的图片(shape)的大小,flag同理【模式三暂未提供!!!!!!!!!先把那个bug解决了再说!!】 + //根据mode调整雷的图片(shape)的大小 PX_Object_PushButtonSetTextColor(cellbutton[j][i], PX_COLOR(255, 255, 0, 0)); } PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE); //使得所有按钮无效,无法继续点击! @@ -263,33 +274,33 @@ void Gamefail() } printf("You lose"); - if(mode==3){ - failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 720, 20, 200, 80, &failpicture); - } - else{ - failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 570, 20, 200, 80, &failpicture); - } - PX_ObjectRegisterEvent(failpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - - px_int buttonx; - if(mode==3){ - buttonx=730; - }else{ - buttonx=600; - } - - PX_Object* returnwelcomebutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,400,150,40, "Return", PX_NULL); + if(mode==3) + { + failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 720, 20, 200, 80, &failpicture); + } + else{ + failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 570, 20, 200, 80, &failpicture); + } + PX_ObjectRegisterEvent(failpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick2, PX_NULL);//创建一个return按钮使得玩家可以返回主界面选择难度 + px_int buttonx; + if(mode==3){ + buttonx=730; + }else{ + buttonx=600; + } + PX_Object* returnwelcomebutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,400,150,40, "Return", PX_NULL); + PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, PX_NULL);//创建一个return按钮使得玩家可以返回主界面选择难度 + //为困难模式单独适配按钮的位置 } ////////////////////////////////////////////////////////////////////////////////// - +//左中右键的控制&open all的控制函数 void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { - if (PX_ObjectIsCursorInRegion(pObject, e)) + if (PX_ObjectIsCursorInRegion(pObject, e))//检测鼠标操作是否在范围内 { opt_t *pcell = (opt_t *)ptr; @@ -353,7 +364,28 @@ void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) } } + +void openall(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ + if (PX_ObjectIsCursorInRegion(pObject, e)) + { + opt_t *pcell = (opt_t *)ptr; + int temp; + temp = fnTotalFlag(Map); + if (opt_is_scuess(*Map)) + { + Gamewin(); + } + else + { + + Gamefail(); + } + } + return; +} + ///////////////////////////////////////////////////////////////////////// +//不同的模式选择函数(点击模式按钮后调用本区域函数) void ceasy(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) @@ -380,6 +412,8 @@ void chard(PX_Object *pObject, PX_Object_Event e, px_void *ptr) Gameinit(); } } +///////////////////////////////////////////////////// +//下为模式选择界面 void modechoose() { ///变换界面就删除原页面的object!(由Painterengine provide)/// @@ -393,66 +427,53 @@ void modechoose() ///变换界面就删除原页面的object!(由Painterengine provide)/// - easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 100, 228, 64, "easy", PX_NULL); + PX_Object* easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 100, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy, &easymode); - midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 200, 228, 64, "middle", PX_NULL); + PX_Object* midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 200, 228, 64, "middle", PX_NULL); PX_ObjectRegisterEvent(midmode, PX_OBJECT_EVENT_EXECUTE, cmid, &midmode); - hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 300, 228, 64, "hard", PX_NULL); + PX_Object* hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 300, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); } -//////////////////////----------------------------------rank 组件 -void towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) -{ - printf("debug2"); - - towelcomebutton->Visible=PX_FALSE; - firstprize ->Visible=PX_FALSE; - secondprize ->Visible=PX_FALSE; - thirdprize ->Visible=PX_FALSE; - ranktitle ->Visible=PX_FALSE; +///////////////////////////////////////////////////// +//rank 组件 - WELCOME2(); - - return ; -} void RANK() { - ///变换界面就删除原页面的object!(由Painterengine provide)/// - //删除之前的按钮(如果有 - if (root) - { - PX_ObjectDelete(root); - } - //重新创建根对象 + + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 400, 228, 64, "Return", PX_NULL); + PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 400, 228, 64, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - printf("debug1"); + + //第一二三名排版 - firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 90, 75, 75, &firstprizepicture); + PX_Object* firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 90, 75, 75, &firstprizepicture); PX_ObjectRegisterEvent(firstprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - secondprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 190, 75, 75, &secondprizepicture); + PX_Object* secondprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 190, 75, 75, &secondprizepicture); PX_ObjectRegisterEvent(secondprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - thirdprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 290, 75, 75, &thirdprizepicture); + PX_Object* thirdprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 290, 75, 75, &thirdprizepicture); PX_ObjectRegisterEvent(thirdprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - ranktitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 20, 210, 75, &ranktitlepicture); + + + + PX_Object* ranktitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 20, 210, 75, &ranktitlepicture); PX_ObjectRegisterEvent(ranktitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object *cheer=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 700, 415, 107, 107, &cheerpicture);; //第一的图片框(在rank里面 + PX_ObjectRegisterEvent(cheer, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); } -//////////////////////----------------------------------rank 组件 -//////////////////////----------------------------------welcome 组件 +///////////////////////////////////////////// +//welcome 组件 px_void beginclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //开始按钮的跳转 { - - printf("NOW begin!\n"); modechoose(); } @@ -468,74 +489,75 @@ void WELCOME() //初始化函数 { ///变换界面就删除原页面的object!(由Painterengine provide)/// //删除之前的按钮(如果有 - if (root) - { - PX_ObjectDelete(root); - } + //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!/// //初始化两个按钮 - beginbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 145, 400, 228, 64, "begin now", PX_NULL); + PX_Object *beginbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 145, 400, 228, 64, "begin now", PX_NULL); PX_ObjectRegisterEvent(beginbutton, PX_OBJECT_EVENT_EXECUTE, beginclick, &beginbutton); - rankingbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 490, 400, 228, 64, "RANK", PX_NULL); + PX_Object *rankingbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 490, 400, 228, 64, "RANK", PX_NULL); PX_ObjectRegisterEvent(rankingbutton, PX_OBJECT_EVENT_EXECUTE, rankingclick, &rankingbutton); - //初始化界面的汉字 + - title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800, 800, &titlepicture); + PX_Object *title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800, 800, &titlepicture); PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - potatoboom = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 2, 415, 110, 105, &potatoboompicture); + PX_Object *potatoboom = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 2, 415, 110, 105, &potatoboompicture); PX_ObjectRegisterEvent(potatoboom, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); //这是MENU - //PX_Object_Menu_Item *pItem; - //menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 100, PX_NULL); - - //pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【Menu", PX_NULL, PX_NULL); - //PX_Object_MenuAddItem(menubutton, pItem, "【Color", PX_NULL, PX_NULL); + PX_Object_Menu_Item *pItem; + PX_Object *menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 100, PX_NULL); - // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 + pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【Menu", PX_NULL, PX_NULL); + + PX_Object_MenuAddItem(menubutton, pItem, "[ HELP ]", openhelp, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ Color ]", PX_NULL, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ Save to file ]", PX_NULL, PX_NULL); + // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 } +////////////////////////////////////////////////////////////// - - - - -void WELCOME2() //初始化函数///此函数用于debug:当先运行一次扫雷后再看排行版无法返回。此函数用于解决这个问题。 +//下为帮助界面 +void openhelp(px_void* userptr) { + //重新创建根对象 + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); + ///变换界面就删除原页面的object!/// + PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 400, 228, 64, "Return", PX_NULL); + PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - - //初始化两个按钮 - beginbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 145, 400, 228, 64, "begin now", PX_NULL); - PX_ObjectRegisterEvent(beginbutton, PX_OBJECT_EVENT_EXECUTE, beginclick, &beginbutton); - - rankingbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 490, 400, 228, 64, "RANK", PX_NULL); - PX_ObjectRegisterEvent(rankingbutton, PX_OBJECT_EVENT_EXECUTE, rankingclick, &rankingbutton); - - //初始化界面的汉字 + PX_Object * helptxt=PX_Object_LabelCreate(&App.runtime.mp_ui, root,32,-325,900,900, + "THIS IS THE HELP TEXT \n " + "BUT IT IS A PITY THAT IT ONLY SUPPORT ENGLISH\n " + "if you want to use chinese\n" + "you could use picture as a substitute",PX_NULL,PX_COLOR(147,112,219,147)); + //可以用\n排版,不能用\t(不能被识别); + //文档只能使用英文(除非另外建立字模,啥是字模请戳↓) + //https://www.painterengine.com/main/tutorials/lesson4_2/lesson4_2.htm + //个人的建议是,帮助文档用一张图片替代。 + return ; +} - title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800, 800, &titlepicture); - PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - potatoboom = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 2, 415, 110, 105, &potatoboompicture); - PX_ObjectRegisterEvent(potatoboom, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - -} - -/// ///////////////////////////////////////-----------------------welcome组件 +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +// 以下为painterengine专门的函数请尽量不要更改!!! // +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_int screen_height) //初始化函数(px内部) { PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height); - // PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &titlepicture, "titlepicture.traw");//加载图片!! - // PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &shape_mine, "mine.traw");//加载图片!! - // PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &shape_mine, "mine.traw");//加载图片!! + //以下为欢迎页图片 @@ -548,11 +570,17 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &thirdprizepicture, "assets\\thirdprize.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &ranktitlepicture, "assets\\ranktitlepicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &failpicture, "assets\\failpicture.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &cheerpicture, "assets\\cheerpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag2, "assets\\flag2picture.traw"); + PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag3, "assets\\flag3picture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine, "assets\\minepicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine2, "assets\\mine2picture.traw"); + PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine3, "assets\\mine3picture.traw"); + + + WELCOME(); //直接前往welcome函数 return PX_TRUE; -- Gitee From 6bd877fea70f5f3dbb602671469b6a95abb595c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sat, 25 Dec 2021 11:45:45 +0800 Subject: [PATCH 09/27] =?UTF-8?q?1.add:=E8=AE=B0=E6=97=B6=202.modechoose?= =?UTF-8?q?=E7=BE=8E=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/modechoosetitle.traw | Bin 0 -> 39612 bytes src/PainterEngine_Application.c | 25 +++++++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 assets/modechoosetitle.traw diff --git a/assets/modechoosetitle.traw b/assets/modechoosetitle.traw new file mode 100644 index 0000000000000000000000000000000000000000..2104da932afbef8838a501fd0a74824bead94b82 GIT binary patch literal 39612 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 literal 0 HcmV?d00001 diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 9cdc4b4..2fdc7ec 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -26,6 +26,7 @@ px_texture ranktitlepicture; //排行版的图片(in rank PX_Object* failpic; px_texture failpicture;//失败的图片与图片框 px_texture cheerpicture; +px_texture modechoose_title_picture; px_shape flag; @@ -39,6 +40,8 @@ px_shape mine3;//雷的图片(in game 数字代表对应困难度下的图片 opt_t cell[100][100]; map *Map = NULL; int mode = 3; +clock_t start,stop; +double duration; ///函数声明 void WELCOME(); @@ -99,6 +102,7 @@ void Gameinit() //生成结束cellbutton } }printf("debug"); + start=clock(); return ; } @@ -211,6 +215,7 @@ px_void* towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { }//返回欢迎页2(与towelcomeclick没有什么差别,主要是为了debug,如果把一些按钮按下调用的函数towelcome2换成towelcome,就会卡死) px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + PX_Object* recordname_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_NULL, congratulation, PX_NULL); }//如果用户想输入名字就记录名字(因为消息对话框只能显示带有ok与cancel的界面,所以不能强制用户输入姓名) @@ -223,7 +228,9 @@ px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { ////////////////////////////////////////////////////////////////////////////////// void Gamewin()//游戏胜利 { - printf("you win"); + stop=clock();//暂停时间 + duration=(double)(stop-start)/CLK_TCK;//获取时间 以s为单位。 + printf("you win,TIME %f",duration); for (int i = 1; i <= Map->my; i++) { for (int j = 1; j <= Map->mx; j++) @@ -235,11 +242,15 @@ void Gamewin()//游戏胜利 if(mode==1)//如果能冲进前三,请求其输入名字,因为wjj还没有写函数,我就默认mode1的都进入了排行榜,会调用rank函数 { PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertYesNo(winmessage, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP THREE!!!\n May I know your name?", recordnameY, PX_NULL, congratulation, PX_NULL); + const char* text[50]; + sprintf(text, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP THREE!!!\n It takes %.2f s\nMay I know your name?", duration); + PX_Object_MessageBoxAlertYesNo(winmessage, text, recordnameY, PX_NULL, congratulation, PX_NULL); } else { PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertYesNo(winmessage, "Congradulation!\nYou Win!\nDo you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); + const char* text2[50]; + sprintf(text2, "Congradulation!\nYou Win!\nIt takes %.2f s\nDo you want to paly again?", duration); + PX_Object_MessageBoxAlertYesNo(winmessage, text2, playagain, PX_NULL, towelcomeclick, PX_NULL); } @@ -248,6 +259,7 @@ void Gamewin()//游戏胜利 void Gamefail()//游戏失败 { + stop=clock();//暂停时间就不管了 failed = 1; for (int i = 1; i <= Map->my; i++) @@ -416,7 +428,7 @@ void chard(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //下为模式选择界面 void modechoose() { - ///变换界面就删除原页面的object!(由Painterengine provide)/// + //删除之前的按钮(如果有 if (root) { @@ -424,8 +436,6 @@ void modechoose() root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); } //重新创建根对象 - - ///变换界面就删除原页面的object!(由Painterengine provide)/// PX_Object* easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 100, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy, &easymode); @@ -435,6 +445,8 @@ void modechoose() PX_Object* hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 300, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); + PX_Object* modechoose_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 20, 210, 75, &modechoose_title_picture); + PX_ObjectRegisterEvent(modechoose_title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); } ///////////////////////////////////////////////////// @@ -571,6 +583,7 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &ranktitlepicture, "assets\\ranktitlepicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &failpicture, "assets\\failpicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &cheerpicture, "assets\\cheerpicture.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_title_picture, "assets\\modechoosetitle.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag2, "assets\\flag2picture.traw"); -- Gitee From 7dac46ea6d3025e536b5c9d26049cc12b49b342e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sat, 25 Dec 2021 13:46:30 +0800 Subject: [PATCH 10/27] =?UTF-8?q?1.=E5=86=99=E4=BA=86help=E7=9A=84?= =?UTF-8?q?=E5=86=85=E5=AE=B92.=E7=BE=8E=E5=8C=96help?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/compass.traw | Bin 0 -> 46668 bytes assets/helptextpic.traw | Bin 0 -> 912812 bytes assets/helptitle.traw | Bin 0 -> 41052 bytes src/PainterEngine_Application.c | 30 ++++++++++++++++++++++-------- 4 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 assets/compass.traw create mode 100644 assets/helptextpic.traw create mode 100644 assets/helptitle.traw diff --git a/assets/compass.traw b/assets/compass.traw new file mode 100644 index 0000000000000000000000000000000000000000..2e961ceaa74ef2fc13fcc0e9b2221e733678db54 GIT binary patch literal 46668 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%0Dl$#J{N9!krG9GUkF?1=g;eYi> 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 Kh#F|E2L2x|YcFa5 literal 0 HcmV?d00001 diff --git a/assets/helptitle.traw b/assets/helptitle.traw new file mode 100644 index 0000000000000000000000000000000000000000..67a952666109d9050d5bf239607c9db839567cad GIT binary patch literal 41052 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 i++) { @@ -541,14 +544,21 @@ void openhelp(px_void* userptr) //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!/// - PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 400, 228, 64, "Return", PX_NULL); + PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 370, 450, 128, 32, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - PX_Object * helptxt=PX_Object_LabelCreate(&App.runtime.mp_ui, root,32,-325,900,900, - "THIS IS THE HELP TEXT \n " - "BUT IT IS A PITY THAT IT ONLY SUPPORT ENGLISH\n " - "if you want to use chinese\n" - "you could use picture as a substitute",PX_NULL,PX_COLOR(147,112,219,147)); + + PX_Object* helptitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 10, 210, 75, &help_title_picture); + PX_ObjectRegisterEvent(helptitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* helptext = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, -100, 700, 700, &help_text_picture); + PX_ObjectRegisterEvent(helptext, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object *compasspic=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 710, 345, 108, 108, &compass);; //第一的图片框(在rank里面 + PX_ObjectRegisterEvent(compasspic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + ///PX_Object * helptxt=PX_Object_LabelCreate(&App.runtime.mp_ui, root,32,-325,900,900, + //"THIS IS THE HELP TEXT \n " + //"BUT IT IS A PITY THAT IT ONLY SUPPORT ENGLISH\n " + //"if you want to use chinese\n" + //"you could use picture as a substitute",PX_NULL,PX_COLOR(147,112,219,147)); //可以用\n排版,不能用\t(不能被识别); //文档只能使用英文(除非另外建立字模,啥是字模请戳↓) //https://www.painterengine.com/main/tutorials/lesson4_2/lesson4_2.htm @@ -584,6 +594,10 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &failpicture, "assets\\failpicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &cheerpicture, "assets\\cheerpicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_title_picture, "assets\\modechoosetitle.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_title_picture, "assets\\helptitle.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_text_picture, "assets\\helptextpic.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &compass, "assets\\compass.traw"); + PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag2, "assets\\flag2picture.traw"); -- Gitee From 51606878b26b6e30205269e2e482287280071762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sat, 25 Dec 2021 20:08:40 +0800 Subject: [PATCH 11/27] =?UTF-8?q?=E4=B8=BArank=E5=88=86=E4=BA=86=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E6=A8=A1=E5=BC=8F=E3=80=82=EF=BC=88=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E7=89=88=E6=AD=A3=E5=9C=A8=E5=AF=B9=E6=8E=A5=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E5=BF=AB=E4=BA=86=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/easyrank.traw | Bin 0 -> 52212 bytes assets/hardrank.traw | Bin 0 -> 52212 bytes assets/midrank.traw | Bin 0 -> 52212 bytes assets/modechoose_rankpicture.traw | Bin 0 -> 128772 bytes src/PainterEngine_Application.c | 115 ++++++++++++++++++++++++----- 5 files changed, 97 insertions(+), 18 deletions(-) create mode 100644 assets/easyrank.traw create mode 100644 assets/hardrank.traw create mode 100644 assets/midrank.traw create mode 100644 assets/modechoose_rankpicture.traw diff --git a/assets/easyrank.traw b/assets/easyrank.traw new file mode 100644 index 0000000000000000000000000000000000000000..459d3debd262628798f91cb42160413d69985ff8 GIT binary patch literal 52212 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 X`DhZ4It0L%=9a{p6AZJp?sxe=VVY*U literal 0 HcmV?d00001 diff --git a/assets/modechoose_rankpicture.traw b/assets/modechoose_rankpicture.traw new file mode 100644 index 0000000000000000000000000000000000000000..a6d62202ef3f8b9e3311a7dc131faed524899a75 GIT binary patch literal 128772 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.mp_resources, &modechoose_title_picture, "assets\\modechoosetitle.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_title_picture, "assets\\helptitle.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_text_picture, "assets\\helptextpic.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_rank_title_picture, "assets\\modechoose_rankpicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &compass, "assets\\compass.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &easyrankpic, "assets\\easyrank.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &midrankpic, "assets\\midrank.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &hardrankpic, "assets\\hardrank.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); -- Gitee From cb2dbb6e8690d1b302f8588fc779d4ec2d813b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 01:16:09 +0800 Subject: [PATCH 12/27] =?UTF-8?q?1.menu=E8=8F=9C=E5=8D=95=E7=9A=84color?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E6=9B=B4=E6=94=B9=E4=BA=86(=E5=8F=AA?= =?UTF-8?q?=E5=86=8D=E6=B8=B8=E6=88=8F=E7=95=8C=E9=9D=A2=E6=9C=89=E6=95=88?= =?UTF-8?q?=EF=BC=89=202.=E6=8E=92=E8=A1=8C=E7=89=88=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=9A=84ui=E5=9F=BA=E6=9C=AC=E9=87=8D=E5=86=99=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/dividline.traw | Bin 0 -> 6012 bytes assets/rank4.traw | Bin 0 -> 8112 bytes assets/rank5.traw | Bin 0 -> 8112 bytes assets/rank6.traw | Bin 0 -> 8112 bytes assets/waiting_fordata.traw | Bin 0 -> 30012 bytes gamedata/testdata.txt | 3 + gamedata/testdata2.txt | 3 + src/PainterEngine_Application.c | 176 ++++++++++++++++++++++++++++---- 8 files changed, 161 insertions(+), 21 deletions(-) create mode 100644 assets/dividline.traw create mode 100644 assets/rank4.traw create mode 100644 assets/rank5.traw create mode 100644 assets/rank6.traw create mode 100644 assets/waiting_fordata.traw create mode 100644 gamedata/testdata.txt create mode 100644 gamedata/testdata2.txt diff --git a/assets/dividline.traw b/assets/dividline.traw new file mode 100644 index 0000000000000000000000000000000000000000..5fac0841f4187f56ef2beccae736d458be83020d GIT binary patch literal 6012 zcmeI$F$%&!5Czaw-pk%XL=;aUV&x^gg^jgfVd)WKkwlXiGdsI>5{P0H6LzHmqxkPWx5enoxB*h1&M55T=iggGaBTTUTW=yiaOxUy;Rg zrcoFk(qv-Y0oQN7@tfBcbPC)jRbn+OEyG1TZ>=?2h`dQpj3Rh|XwZAw3(pVSDw?1`EA zFV?q&NUr?Y3ZXUpI?Bt4ombLWmnn%4Lm-ic@XO}-_OgcLHA(3zNWDPIfK)E zsonO>4OM;k6gd2Jc);deJWpN*_Be1q9IVJ1wmHY^=4E`Fw|L!nzZ-l%FRO-iM)fJy zDviTidEJi8{1)%?F^hA=tZ@3>wW`N2@K|9op*?QhPFo|fL*V>9t(#cC;Ik*3es>MO z38%55e3``nJ$}}$+iA-Ys}gxYGQ)#T$cDM!>37%go6ZbYRJ;R+ra3qe+QD-`&iKBl zDYo6s)oJ7X-tl-5GUjqfyB;lcbn-QO4i00yUT~&tkICaQvYp3c#mTfGqcdC5h;`Df z7rxymwb(1Ok<+aW&2)zwFQQ$n#}9bvmux#v)-A)Wlf^wxJRYjVEOX-pv=h13J~scb zX$O3#pD!{oFXiHl^OMR9R?Pa1@t;cV1FJkaghKh78+z8di*%E&_QbP?7>nVxaC8&= zeo%moZRCu1rI4MUlfx1_z;_GQ!nYzgWA4LCq&4T?G(E8k@kYpg6!E_oyt@`!WI`X6 z+#dDJn~ROXofzjyYAoGC-pa2-qSluA$HkoYmbQ(o@iMa396tzO@FkyHjL#{=yq7ay zHE8)_#_|zsc-fdegP&FT$Ya50&`QL7fOt@!qdX2G=l`7M|K^v4jeOdZ{Y6_~UqSsk z7g_K(JlFdn?u@edKNluweONy`!5immKHsM;dCy9diV?41_iwQEWYFyC$%oJpIg%)4 z_dx9a%@ea^dx(io3W?V^IdSSd1@~`3<_#Zilv?_;_m{XYRCTi!dy-MV&ZOqI5%N^{ u1N`8;6zZD3&vYj;@Dq0b2LG-Gwi{!P{{#NXR6NtoXE@WVO!=>CkMtYs*95-+ literal 0 HcmV?d00001 diff --git a/assets/rank5.traw b/assets/rank5.traw new file mode 100644 index 0000000000000000000000000000000000000000..4e7b1477206bfd733acc3e71a3e5098682654aac GIT binary patch literal 8112 zcmeI1KWG#|6vkJLg_v+Vdl#c12x5^&3&lo3)XGi>f{l$@*eF;8EQ}n%!or9#*_q2} zBpMVnr3gV#k|IUWphP9!&fFQ2!Ye#b11b@d^_w$`lVmsEzq#x|4jwbNdo%O9H{ZT_ zvvZ>5$jRM?VMtr_iMw@#iUVdsTqBH+SxkJf7@tS!R?Vm!kLSQKN|L#Y3?Es2bmYeZl9!K4VeQLz0<@${p?f(18E;G(4=!=M_HhGltx{Jh#*X z6TM;P{m16CNu7|c)WLA+VY!bzW^iVs$yBpN(;eQm(3f~Vq3>33z6m|6`m9nuLT)fI{joNlfPT(zH-l^d=P8h zZ!O$R}a(<5bH=TkJxt`Mk<}K5>o@%9x_Edi7Yh*bBYs%IADo3X8+g#seenuJ<_A z(zL~Koj%6c&yY{d6+cG$ipr_hp$omSnK~`t9mX^BsTeaUKc#Z2b@<>>@jfVQer3P% z8ISc$Y>O~wXE9cvOvO}AwGJ)6)5eV0Eb}&XymISNn%R%}`l*eX@##kUeSNu{UV9m@ z!TVevFZ4tC6!L>;*%UIVq-ZR$DoMJuB zA|8y^6fkmFh66tgD{0+XIschexv_|=)X@A@y&w-F%_0$40q3KIr zUYlP_asC!&ZfLl3+1>%?g%)$#u&!pYK8Hl#$k(9<=-`48ANqTq=_M^*37yFEH|V<+ bza4?!bF08Vmyc)68MYGQd|tmx_Bnq5Rs$L$ literal 0 HcmV?d00001 diff --git a/assets/rank6.traw b/assets/rank6.traw new file mode 100644 index 0000000000000000000000000000000000000000..445bd2b20e99b0b43ef54537fedb7b7d5922727a GIT binary patch literal 8112 zcmeI1OK1~87{^zwPiS{%BZ{C_#e*n55JXTEJbBQAiXh%Rh+gc;*QF4P2M@N`*36`- zm3UB;3Z8lt>OrMo@PXB4XVL~i?WI^PKG2fJ|D>kfq&r%Zowx-9!_H3ToA0;ZeDlrg z@S#0NHX4Q@Q^7Bsts+$Hu%hA;VLV|oF>EtFhG({7iAsHZ2pm0xi3W@IZ!$VN=M-@M zda1tpI%H9C3#?x&#`i~C@G-ED*i^KUSikA!4t4ZZRdSW0mrUr0FT* znYurM_8+o_`7hSqbZ!&s{9{$LvO6JeD0oTAj^G<`Vue<7o@)ofo>85fk2;t;y9TpeaSr z<_hq>(a4-MucR$60J;Aql(#6-#kDPbzL%Wc!q;OQjOb!UA3id|+1XyY7q<=UR_O)P zJtN#bzV|E=My%PcGuDu(xKX5X;?<%~or>9JsdiMHHBs4>Ara@OTCV(fO_+1mrLG_g zzr3!}4SzXTP}%hYxeF>eKgwateJ*vA+1%L^?^f!FrVdV4F3i~xen%-cjrrpDvV6>p z_N^+^IQ}NrOz_ETR)b~rsxlh{k~N};FGk7Pw~4jaI=t5zE-#@>IO<DFs?)>NtWekBlv?bt+g(#{w;a z3XJW*Ao$=}ZHdqn5FCfrK&K*2 z{_N{}?0)<0?zej`W4<@^2aDRYY4asu|EvY91*`?E1*`?E1*`?E1*`?E1*`?E1*`?a zEKpxx-|pD4V?B-^KRz%&KYuv5H&&cHc~Z1rh4%*Jv=7r^>n|@0;0qn_i|Iv0MQ4hO zi>vUHns@lcZp@+dA=sk-bPyB?w^V+vs(y!1v5k0j5y0a4* zpZbjKqsZMwzFi`+#H+mzc|~BoE9>y#!`DzQ1=HNRc+%Y5+>e>`dV?{`{yhG1C*!Gt zZm7R4T3K`G*ms>tM_o5?j{YCSMv=3_Y)?ks(d+Rm_K$kb!tpKXSG+q+ksiN(##)i+ zxRCK4a^J?TdN&&e#!xp4tg5T4yCNR>$WV-+erB8gKzR=Gs@S`}9FIKshJelPd7qP$ za|Ln=SYso?w^P58>O$!AQvQ-33}&VfB?X=yRH+P6NB9eR_$kNksR zHu>{F>rV4u2`HY}fuG&(m)V@MBiG|wtzo~ye(mUcHnvF9dS*WQx}Z+6s`jTc4JqaW3N$uk#q*>X3}!fZ!r&{ z=OOK>Kzqbu%@=7;eDgNuYY^!O%8!8Gf|Wq?Rt9}!{i8D%gx*J?ZRA&uPejHeA2a6@ zeb2*FW5#!8yYdZ+0Xs9z58-qq3i z?xzncBR|xy6jRck5k%9RI>x4V(a1YPGU9gn@HcF81dJkoH}?1(Hr1P09pwe4-zZj9 zJM~)2QP(~EJwc)5fW_LcNaYKXTSa;p$Uj$7evWhlSjgChQSOJ{4yJCu?V)YtSE8YR zx+5Id{F^+~Yu`MA%+NRv-MyiE)#OFiv*052<4t+^=k?UrAae=nV_*(6FOu$}PX4x! zxo< z=d~w5E4iAJ8tlDTH1xSW`}plTbNxKfJ^_lLzscVgRE9RtuXGmCN6(uQ?|gd0)SJe} zAX#B`(BB7ihulHGeowjxtYAFpq`QIkcg0v*JL>y(Ae+g@enJ}8J=fn4_(T0lwCG&S zSR2s<@ikQ^ImnwQxrzFf?qJB;kIpQ7Wi0t$k$;6$c2s}0?g~jWNz<^^Go)Lhy))oD zx(hr7-FDHzTSK4cs=xZ9Z9H{v|F`tvztp7yjcwV7wc$DF0{tq81HbA6edygGh=)Ea zMlS(b z$f;zUk=P+oztaAJew|etfxcnBOS%j^p?;A*u5;YA1@ZMKsH&+CtanKx~ zkC8hhWt|lbeue+uLRsGjJm)BMPpTex-ib`vW*)kj{mSv>TKaUWDI+XT9MA>%`+(x| z4AGfqqn{7Dt>7^BOd(dd9zDZAXFpxMWpp?47t^m4$D!vn>JzJro)dHEEoUM+r@}KOR)`)vgzfKS+zt2jMEwex zeVo2OY>t^d<=gc0r?jsiRgA57EZy0b(ucXEq5o}C?}er;eUT17imzMGg zu)r-hmBQP|uc+&b44p|cTz<-t?=7TFp0C(eae>}dbnffT>JaHl(mABc=L7w=Quk%~ zk@kpFq-RObkS+n!u+{ytVJv>^_A@9&W|Mvu#FuDY68uVceZBYG;r7MZPqbbYcXtBo zKoNF|yycMJM4QJCU0#2R4|axDac#pnC>qLNlg&uyt89E@@$55d3;ToD<5!fwiA;T0 znPT$L@88i@M_(ebgV|>0HEwtpLc585{3^9kJ_MFI-)yvhy-B;`bG?fW(D+10-B!x) zE1%3iWCr>b@#2rwC;g@(*^pe`R;KB^_3LMx6|syDzB!;w@dUm#8NN>9!(LO#YdsF8 z{Yla~z30e|Y6YO%jQ+A1tSQ0Q}pXJC|Om?yIyZUalm6 zx7p_GP1<|&$oDea6i36e9_YTd#NBU98Z(cKK)+%Qeu{l-j7y6=>sJ^9d$z|G2f$3% zHcGK$H|kac&wfQ&Zz4~_=k76WHGf%IS&_KalwszH|89WyBA5sLrsh@`H28@cd50 zl%+g0fqtbnWc(TE8;J@TOtkSK<3akY_v22AWl4LoFZ6Ih z`B7+eCjJbpA+P;v4Oj~{1I>FmNRy9->0+M0qy9oSSN9gmzajr~Fq(XS`2p=WY5xh6 z5lg-H9ppTW++xya+%qvTDo zLEUutJ>TL?z4BA&&O$fatWQ=Rzi5k34pINmqc^txvC3}hZAmcz@^mkHAxx&eQ$e#9 z8vPdFhhcQht!GS=*k6m0T_vDL@q+xU22{5oBwu=TPF1735}zs}{ZZIh=<7G2ZFqmu z+)y_X`+S%BuPB~@zccf7rS^e%e#aT46WI?SZ)i|kqIK#g@|V%?A<_1p=IX&F4{3F)i=*K%+=We6;SAJEheI{NRmcI2^!1`6|nXA^+Q^k9niJQ4E z>}20s&KVi{`@}@XrQaeTKV5pb-(--Fdgo6>m*xH6TR^dvVqT%C`);DWb@go9w$1aK z+eGDBero}10c!zk0c!zk0c!zk0c!zk0c!zk0c!zk0c!zk0c!zk0c!zk0c!zk0c!zk M0c!zkfp81_2eqg`U;qFB literal 0 HcmV?d00001 diff --git a/gamedata/testdata.txt b/gamedata/testdata.txt new file mode 100644 index 0000000..168dd25 --- /dev/null +++ b/gamedata/testdata.txt @@ -0,0 +1,3 @@ +jiang 12.111223 +bb 12.000000 +cccc 12.121322 \ No newline at end of file diff --git a/gamedata/testdata2.txt b/gamedata/testdata2.txt new file mode 100644 index 0000000..da430e5 --- /dev/null +++ b/gamedata/testdata2.txt @@ -0,0 +1,3 @@ +wang 12.34444 +int 293.999999 +char 398.99999 \ No newline at end of file diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 7b985fb..24230ef 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -20,7 +20,10 @@ px_texture potatoboompicture; //标题的图片(在welcome里面 px_texture firstprizepicture; //第一的图片(in rank px_texture secondprizepicture; //第2的图片(in rank -px_texture thirdprizepicture; //第3的图片(in rank +px_texture thirdprizepicture; +px_texture rank4pic; +px_texture rank5pic; +px_texture rank6pic; px_texture ranktitlepicture; //排行版的图片(in rank PX_Object* failpic; @@ -34,7 +37,8 @@ px_texture modechoose_rank_title_picture; px_texture easyrankpic; px_texture midrankpic; px_texture hardrankpic; - +px_texture dividline; +px_texture waiting_fordata; px_shape flag; px_shape flag2; @@ -48,6 +52,7 @@ opt_t cell[100][100]; map *Map = NULL; int mode = 1; int RANKmode=1; +int colormode=0; clock_t start,stop; float duration; @@ -68,6 +73,9 @@ void openhelp(px_void* userptr); void save_to_file(px_void* userptr); px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr); px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr); +void setcol_white(px_void* userptr); +void setcol_pink(px_void* userptr); +void setcol_purple(px_void* userptr); ///////////////////////////////////////////////////////////// //辅助函数(不看 @@ -108,7 +116,18 @@ void Gameinit() PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); - //生成结束cellbutton + //生成结束cellbutton,下为根据colormode扫雷页面cellbutton的更改颜色 + if(colormode==0){ + ;//白色就用原来的配色,所以不管 + } + if(colormode==1){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + } + if(colormode==2){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + } } }printf("debug"); start=clock(); @@ -145,6 +164,17 @@ void Gamenow() PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); + if(colormode==0){ + ;//白色就用原来的配色,所以不管 + } + if(colormode==1){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + + } + if(colormode==2){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + + } } if (Map->stage[j][i] == FLAGED) { @@ -161,6 +191,17 @@ void Gamenow() PX_Object_PushButtonSetShape(cellbutton[j][i], &flag3); } //不同的mode对应flag的不同大小。 + if(colormode==0){ + ;//白色就用原来的配色,所以不管 + } + if(colormode==1){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + + } + if(colormode==2){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + + } } if (Map->stage[j][i] == UNCOVERED) { @@ -169,6 +210,17 @@ void Gamenow() PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); + if(colormode==0){ + ;//白色就用原来的配色,所以不管 + } + if(colormode==1){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + } + if(colormode==2){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + } } if (Map->stage[j][i] == COVERED) { @@ -189,7 +241,20 @@ void Gamenow() sprintf(text, "%d", count); if (count) PX_Object_PushButtonSetText(cellbutton[j][i], text); + + if(colormode==0){ + ;//白色就用原来的配色,所以不管 + } + if(colormode==1){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + } + if(colormode==2){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); } + } + } } } @@ -444,13 +509,13 @@ void modechoose() //重新创建根对象 - PX_Object* easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 100, 228, 64, "easy", PX_NULL); + PX_Object* easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy, &easymode); - PX_Object* midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 200, 228, 64, "middle", PX_NULL); + PX_Object* midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 250, 228, 64, "middle", PX_NULL); PX_ObjectRegisterEvent(midmode, PX_OBJECT_EVENT_EXECUTE, cmid, &midmode); - PX_Object* hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 300, 228, 64, "hard", PX_NULL); + PX_Object* hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); PX_Object* modechoose_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 20, 210, 75, &modechoose_title_picture); PX_ObjectRegisterEvent(modechoose_title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); @@ -467,25 +532,35 @@ void RANK() root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 400, 228, 64, "Return", PX_NULL); + PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 290, 420, 148, 45, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); //第一二三名排版 - PX_Object* firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 90, 75, 75, &firstprizepicture); + PX_Object* firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 90, 75, 75, &firstprizepicture); PX_ObjectRegisterEvent(firstprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* secondprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 190, 75, 75, &secondprizepicture); + PX_Object* secondprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 190, 75, 75, &secondprizepicture); PX_ObjectRegisterEvent(secondprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* thirdprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, 290, 75, 75, &thirdprizepicture); + PX_Object* thirdprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 290, 75, 75, &thirdprizepicture); PX_ObjectRegisterEvent(thirdprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object *divid_line=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 360, -35, 6, 550, &dividline);; + PX_ObjectRegisterEvent(divid_line, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + + PX_Object* rank4 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 90, 75, 75, &rank4pic); + PX_ObjectRegisterEvent(rank4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* rank5 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 190, 75, 75, &rank5pic); + PX_ObjectRegisterEvent(rank5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* rank6 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 290, 75, 75, &rank6pic); + PX_ObjectRegisterEvent(rank6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* ranktitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 20, 210, 75, &ranktitlepicture); + PX_Object* ranktitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 280, 0, 210, 75, &ranktitlepicture); PX_ObjectRegisterEvent(ranktitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object *cheer=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 700, 415, 107, 107, &cheerpicture);; //第一的图片框(在rank里面 + PX_Object *cheer=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 700, 415, 107, 107, &cheerpicture);; PX_ObjectRegisterEvent(cheer, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* easyrank ; PX_Object* midrank ; @@ -503,10 +578,43 @@ void RANK() hardrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &hardrankpic); PX_ObjectRegisterEvent(hardrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); break; + } + int valid_data=1; + - + PX_Object *waiting_fordata1; + PX_Object *waiting_fordata2; + PX_Object *waiting_fordata3; + + PX_Object *waiting_fordata4; + PX_Object *waiting_fordata5; + PX_Object *waiting_fordata6; + switch(valid_data) + { + case 0: + waiting_fordata1=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 100, 250, 50, &waiting_fordata);; + PX_ObjectRegisterEvent(waiting_fordata1, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 1: + waiting_fordata2=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 200, 250, 50, &waiting_fordata);; + PX_ObjectRegisterEvent(waiting_fordata2, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 2: + waiting_fordata3=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 310, 250, 50, &waiting_fordata);; + PX_ObjectRegisterEvent(waiting_fordata3, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 3: + waiting_fordata4=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 420, 100, 250, 50, &waiting_fordata);; + PX_ObjectRegisterEvent(waiting_fordata4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 4 + :waiting_fordata5=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 420, 200, 250, 50, &waiting_fordata);; + PX_ObjectRegisterEvent(waiting_fordata5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 5: + waiting_fordata6=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 420, 310, 250, 50, &waiting_fordata); + PX_ObjectRegisterEvent(waiting_fordata6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + default :break; + } + + return; } ///////////////////////////////////////////////////////////////////////// //不同的模式选择函数(点击模式按钮后调用本区域函数) @@ -601,19 +709,39 @@ void WELCOME() //初始化函数 PX_ObjectRegisterEvent(potatoboom, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); //这是MENU - PX_Object_Menu_Item *pItem; + PX_Object_Menu_Item *pItem,*pItem1; PX_Object *menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 100, PX_NULL); - pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【Menu", PX_NULL, PX_NULL); - - PX_Object_MenuAddItem(menubutton, pItem, "[ HELP ]", openhelp, PX_NULL); - - PX_Object_MenuAddItem(menubutton, pItem, "[ Save to file ]", save_to_file, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem, "[ Color ]", PX_NULL, PX_NULL); + pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【 M e n u 】", PX_NULL, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ HELP ]", openhelp, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ Save to file ]", save_to_file, PX_NULL); + pItem1=PX_Object_MenuAddItem(menubutton, pItem, "[ Color ]", PX_NULL, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ white ]", setcol_white, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ pink ]", setcol_pink, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ blue ]", setcol_purple, PX_NULL); // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 } ////////////////////////////////////////////////////////////// //下为menu的返回函数 +//下为颜色返回函数 +void setcol_white(px_void* userptr){ + colormode=0; + PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to WHITE.It will take effect in the game interface",PX_NULL,PX_NULL); + return; +} +void setcol_pink(px_void* userptr){ + colormode=1; + PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PINK.It will take effect in the game interface",PX_NULL,PX_NULL); + +} +void setcol_purple(px_void* userptr){ + colormode=2; + PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PURPLE.It will take effect in the game interface",PX_NULL,PX_NULL); + +} //下为帮助界面 void openhelp(px_void* userptr) { @@ -637,7 +765,7 @@ void openhelp(px_void* userptr) void save_to_file(px_void* userptr) { PX_Object* save_to_file_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(save_to_file_message,"We have automatically saved it for you",PX_NULL,PX_NULL); + PX_Object_MessageBoxAlertOk(save_to_file_message," We automatically save it when win.\nYou can check it in the gamedata folder.\nWe only record the top ten of each mode",PX_NULL,PX_NULL); return; } @@ -676,6 +804,12 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &easyrankpic, "assets\\easyrank.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &midrankpic, "assets\\midrank.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &hardrankpic, "assets\\hardrank.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &dividline, "assets\\dividline.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &waiting_fordata, "assets\\waiting_fordata.traw"); + + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &rank4pic, "assets\\rank4.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &rank5pic, "assets\\rank5.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &rank6pic, "assets\\rank6.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); -- Gitee From 9ec84904aee9bdd63cde388ae73ecb97402b1380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 12:09:28 +0800 Subject: [PATCH 13/27] =?UTF-8?q?1.=E5=88=A9=E7=94=A8test=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=8F=AF=E4=BB=A5=E8=AF=BB=E5=8F=96=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E7=89=88=EF=BC=88=E6=B2=A1=E6=9C=89=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E4=BB=A5=E8=99=9A=E4=BD=8D=E4=BB=A5=E5=BE=85=E4=BB=A3=E6=9B=BF?= =?UTF-8?q?=EF=BC=892.=E4=B8=80=E7=B3=BB=E5=88=97=E7=BE=8E=E5=8C=96=20=20?= =?UTF-8?q?=20=E6=8E=92=E8=A1=8C=E7=89=88=E5=87=BD=E6=95=B0=E8=BF=98?= =?UTF-8?q?=E5=A4=84=E5=9C=A8bug=E4=B8=AD=E6=89=80=E4=BB=A5=E7=9B=AE?= =?UTF-8?q?=E5=89=8D=E7=9A=84=E6=95=B0=E6=8D=AE=E4=B8=BA=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/helptitle.traw | Bin 41052 -> 50412 bytes assets/modechoose_check.traw | Bin 0 -> 40012 bytes assets/modechoose_rank_trophy.traw | Bin 0 -> 106272 bytes assets/modechoosetitle.traw | Bin 39612 -> 103252 bytes gamedata/testdata2.txt | 3 +- src/PainterEngine_Application.c | 135 +++++++++++++++++++++++------ 6 files changed, 112 insertions(+), 26 deletions(-) create mode 100644 assets/modechoose_check.traw create mode 100644 assets/modechoose_rank_trophy.traw diff --git a/assets/helptitle.traw b/assets/helptitle.traw index 67a952666109d9050d5bf239607c9db839567cad..0b916400f0486e72c22ecfa9af5da79170e8f7f9 100644 GIT binary patch literal 50412 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 ZzzhS#3Nb_Mq}`HtJjde_fmvST{{hrc{<8o8 literal 41052 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 E0U%WEXaE2J literal 0 HcmV?d00001 diff --git a/assets/modechoose_rank_trophy.traw b/assets/modechoose_rank_trophy.traw new file mode 100644 index 0000000000000000000000000000000000000000..0e7b1c5e4bd4153cdd06f434913f9758acb94011 GIT binary patch literal 106272 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 IV^Z$_KN5qAivR!s literal 0 HcmV?d00001 diff --git a/assets/modechoosetitle.traw b/assets/modechoosetitle.traw index 2104da932afbef8838a501fd0a74824bead94b82..ad32a41f0c4ee743baa0f4a4c274271e1c00e80d 100644 GIT binary patch literal 103252 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 diff --git a/gamedata/testdata2.txt b/gamedata/testdata2.txt index da430e5..ce59f01 100644 --- a/gamedata/testdata2.txt +++ b/gamedata/testdata2.txt @@ -1,3 +1,4 @@ wang 12.34444 int 293.999999 -char 398.99999 \ No newline at end of file +char 398.99999 +wode 12.3333 \ No newline at end of file diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 24230ef..916bac2 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -30,10 +30,12 @@ PX_Object* failpic; px_texture failpicture;//失败的图片与图片框 px_texture cheerpicture; px_texture modechoose_title_picture; +px_texture modechoose_check; px_texture help_title_picture; px_texture help_text_picture; px_texture compass; px_texture modechoose_rank_title_picture; +px_texture modechoose_rank_trophypic; px_texture easyrankpic; px_texture midrankpic; px_texture hardrankpic; @@ -54,9 +56,9 @@ int mode = 1; int RANKmode=1; int colormode=0; clock_t start,stop; -float duration; - -///函数声明 +float duration;// 经历的时间 +px_char * NAME; +//////////////////////////////函数声明///////////////////////////////// void WELCOME(); void RANK(); void Gameinit(); @@ -78,14 +80,6 @@ void setcol_pink(px_void* userptr); void setcol_purple(px_void* userptr); ///////////////////////////////////////////////////////////// -//辅助函数(不看 -/* -px_float PX_Object_Event_GetCursorX(PX_Object_Event e); -px_float PX_Object_Event_GetCursorY(PX_Object_Event e); - -px_void(*ProcessFunc)(PX_Object*, PX_Object_Event e, px_void* ptr);//点击左/右键时运行下方函数 - -*/ ///////////////////////////////////////////////////// //游戏正在进行的组件 @@ -292,6 +286,10 @@ px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { PX_Object* recordname_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_NULL, congratulation, PX_NULL); + NAME=PX_Object_MessageBoxGetInput(recordname_message); + char text[50]; + sprintf(text, "%d", *NAME); + printf("%s",text); }//如果用户想输入名字就记录名字(因为消息对话框只能显示带有ok与cancel的界面,所以不能强制用户输入姓名) px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { @@ -317,8 +315,9 @@ void Gamewin()//游戏胜利 { PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); const char* text[50]; - sprintf(text, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP THREE!!!\n It takes %.2f s\nMay I know your name?", duration); + sprintf(text, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP TEN!!!\n It takes %.2f s\nMay I know your name?", duration); PX_Object_MessageBoxAlertYesNo(winmessage, text, recordnameY, PX_NULL, congratulation, PX_NULL); + } else { PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); @@ -517,8 +516,11 @@ void modechoose() PX_Object* hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); - PX_Object* modechoose_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 20, 210, 75, &modechoose_title_picture); + + PX_Object* modechoose_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 20, 300, 90, &modechoose_title_picture); PX_ObjectRegisterEvent(modechoose_title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* modechoose_checkpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 450, 300, 90, &modechoose_check); + PX_ObjectRegisterEvent(modechoose_checkpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); } ///////////////////////////////////////////////////// @@ -578,15 +580,44 @@ void RANK() hardrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &hardrankpic); PX_ObjectRegisterEvent(hardrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); break; + }//根据选择的排行版模式难度对应不同的提示图片(右侧标有简单困难的小旗帜) + + int valid_data=0; + typedef struct + { + char name[50]; + float time; + }players; + players player[11]; + if(RANKmode==1){ + FILE *fp1; + fp1=fopen("gamedata\\testdata.txt","r"); + while(1){ + if((fscanf(fp1,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + break; + else + valid_data++; + } + } + if(RANKmode==2){ + FILE *fp2; + fp2=fopen("gamedata\\testdata2.txt","r"); + while(1){ + if((fscanf(fp2,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + break; + else + valid_data++; + } } - int valid_data=1; + +//下为根据有效数据的情况判断哪些位置还没有数据,以虚位以待的图片进行代替 + PX_Object *waiting_fordata1; PX_Object *waiting_fordata2; PX_Object *waiting_fordata3; - PX_Object *waiting_fordata4; PX_Object *waiting_fordata5; PX_Object *waiting_fordata6; @@ -602,18 +633,65 @@ void RANK() waiting_fordata3=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 310, 250, 50, &waiting_fordata);; PX_ObjectRegisterEvent(waiting_fordata3, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 3: - waiting_fordata4=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 420, 100, 250, 50, &waiting_fordata);; + waiting_fordata4=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 100, 250, 50, &waiting_fordata);; PX_ObjectRegisterEvent(waiting_fordata4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 4 - :waiting_fordata5=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 420, 200, 250, 50, &waiting_fordata);; + :waiting_fordata5=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 200, 250, 50, &waiting_fordata);; PX_ObjectRegisterEvent(waiting_fordata5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 5: - waiting_fordata6=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 420, 310, 250, 50, &waiting_fordata); + waiting_fordata6=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 310, 250, 50, &waiting_fordata); PX_ObjectRegisterEvent(waiting_fordata6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); default :break; } + + + + PX_Object * No1; + char textno1[70]; + PX_Object * No2; + char textno2[70]; + PX_Object * No3; + char textno3[70]; + PX_Object * No4; + char textno4[70]; + PX_Object * No5; + char textno5[70]; + PX_Object * No6; + char textno6[70]; + + switch(valid_data){ + case 6: + sprintf(textno6,"NAME: %s \nTIME: %.3f s",player[6].name,player[6].time); + No6=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,200 ,250,250,textno6,PX_NULL,PX_COLOR(140,255,228,196)); + PX_ObjectRegisterEvent(No6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 5: + sprintf(textno4,"NAME: %s \nTIME: %.3f s",player[5].name,player[5].time); + No5=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,100 ,250,250,textno5,PX_NULL,PX_COLOR(140,255,228,196)); + PX_ObjectRegisterEvent(No5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 4: + sprintf(textno4,"NAME: %s \nTIME: %.3f s",player[4].name,player[4].time); + No4=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,0 ,250,250,textno4,PX_NULL,PX_COLOR(140,255,228,196)); + PX_ObjectRegisterEvent(No4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 3: + sprintf(textno3,"NAME: %s \nTIME: %.3f s",player[3].name,player[3].time); + No3=PX_Object_LabelCreate(&App.runtime.mp_resources, root,100,210 ,250,250,textno3,PX_NULL,PX_COLOR(140,255,228,196)); + PX_ObjectRegisterEvent(No3, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 2: + sprintf(textno2,"NAME: %s \nTIME: %.3f s",player[2].name,player[2].time); + No2=PX_Object_LabelCreate(&App.runtime.mp_resources, root,100,110 ,250,250,textno2,PX_NULL,PX_COLOR(140,255,228,196)); + PX_ObjectRegisterEvent(No2, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 1: + sprintf(textno1,"NAME: %s \nTIME: %.3f s",player[1].name,player[1].time); + No1=PX_Object_LabelCreate(&App.runtime.mp_resources, root,100,10 ,250,250,textno1,PX_NULL,PX_COLOR(140,255,228,196)); + PX_ObjectRegisterEvent(No1, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 0:break; + + + } + + return; } ///////////////////////////////////////////////////////////////////////// @@ -665,6 +743,8 @@ void modechoose_rank() PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard_rank, &hardmode); PX_Object* modechoose_rank_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 20, 290, 120, &modechoose_rank_title_picture); PX_ObjectRegisterEvent(modechoose_rank_title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* modechoose_rank_trophy = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, 360, 290, 200, &modechoose_rank_trophypic); + PX_ObjectRegisterEvent(modechoose_rank_trophy, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); } ///////////////////////////////////////////// @@ -710,15 +790,16 @@ void WELCOME() //初始化函数 //这是MENU PX_Object_Menu_Item *pItem,*pItem1; - PX_Object *menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 100, PX_NULL); + PX_Object *menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 200, PX_NULL); - pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "【 M e n u 】", PX_NULL, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem, "[ HELP ]", openhelp, PX_NULL); + pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "_______< M e N u >_______", PX_NULL, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ H E L P ]", openhelp, PX_NULL); PX_Object_MenuAddItem(menubutton, pItem, "[ Save to file ]", save_to_file, PX_NULL); pItem1=PX_Object_MenuAddItem(menubutton, pItem, "[ Color ]", PX_NULL, PX_NULL); PX_Object_MenuAddItem(menubutton, pItem1, "[ white ]", setcol_white, PX_NULL); PX_Object_MenuAddItem(menubutton, pItem1, "[ pink ]", setcol_pink, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem1, "[ blue ]", setcol_purple, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ purple ]", setcol_purple, PX_NULL); + // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 } ////////////////////////////////////////////////////////////// @@ -727,19 +808,19 @@ void WELCOME() //初始化函数 void setcol_white(px_void* userptr){ colormode=0; PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to WHITE.It will take effect in the game interface",PX_NULL,PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to WHITE.It will take effect in the game interface",PX_NULL,PX_NULL); return; } void setcol_pink(px_void* userptr){ colormode=1; PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PINK.It will take effect in the game interface",PX_NULL,PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PINK.It will take effect only in the game interface",PX_NULL,PX_NULL); } void setcol_purple(px_void* userptr){ colormode=2; PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PURPLE.It will take effect in the game interface",PX_NULL,PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PURPLE.It will take effect only in the game interface",PX_NULL,PX_NULL); } //下为帮助界面 @@ -797,9 +878,13 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &failpicture, "assets\\failpicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &cheerpicture, "assets\\cheerpicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_title_picture, "assets\\modechoosetitle.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_check, "assets\\modechoose_check.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_title_picture, "assets\\helptitle.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_text_picture, "assets\\helptextpic.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_rank_title_picture, "assets\\modechoose_rankpicture.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_rank_trophypic, "assets\\modechoose_rank_trophy.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &compass, "assets\\compass.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &easyrankpic, "assets\\easyrank.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &midrankpic, "assets\\midrank.traw"); -- Gitee From 3d58cc4a31b85454033fc7f6430b09b55e884ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 12:16:20 +0800 Subject: [PATCH 14/27] =?UTF-8?q?1.=E5=88=A9=E7=94=A8=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=9B=E8=A1=8C=E6=8E=92=E8=A1=8C=E7=89=88?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=B9=B6=E6=98=BE=E7=A4=BA=202.=E4=B8=80?= =?UTF-8?q?=E7=B3=BB=E5=88=97=E7=BE=8E=E5=8C=96=20=20=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E6=8E=92=E8=A1=8C=E7=89=88=E8=BF=98=E6=9C=89=E4=BA=9Bbug?= =?UTF-8?q?=E6=89=80=E4=BB=A5=E6=88=91=E8=BF=99=E8=BE=B9=E5=B0=B1=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=EF=BC=8C=E6=B2=A1=E6=9C=89=E8=B0=83=E7=94=A8=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E7=89=88=E5=87=BD=E6=95=B0=EF=BC=8C=E6=9A=82=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=9C=A8=E6=B5=8B=E8=AF=95=E4=B8=AD=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamedata/testdata2.txt | 3 ++- src/PainterEngine_Application.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gamedata/testdata2.txt b/gamedata/testdata2.txt index ce59f01..c3f6d1c 100644 --- a/gamedata/testdata2.txt +++ b/gamedata/testdata2.txt @@ -1,4 +1,5 @@ wang 12.34444 int 293.999999 char 398.99999 -wode 12.3333 \ No newline at end of file +wode 12.3333 +test5 13.22223 \ No newline at end of file diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 916bac2..e90476c 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -667,7 +667,7 @@ void RANK() No6=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,200 ,250,250,textno6,PX_NULL,PX_COLOR(140,255,228,196)); PX_ObjectRegisterEvent(No6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 5: - sprintf(textno4,"NAME: %s \nTIME: %.3f s",player[5].name,player[5].time); + sprintf(textno5,"NAME: %s \nTIME: %.3f s",player[5].name,player[5].time); No5=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,100 ,250,250,textno5,PX_NULL,PX_COLOR(140,255,228,196)); PX_ObjectRegisterEvent(No5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 4: -- Gitee From 3ff4ad61dfd7fbe85fd65181aea65c9e8b95e7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 20:52:45 +0800 Subject: [PATCH 15/27] =?UTF-8?q?1.=E6=9D=B0=E5=93=A5=E7=9A=84=E6=8E=92?= =?UTF-8?q?=E8=A1=8C=E7=89=88=E6=9D=A5=E4=BA=86=EF=BC=812.=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E7=BE=8E=E5=8C=963.=E6=96=B0=E5=A2=9E=E4=BA=86?= =?UTF-8?q?=E5=BD=A9=E8=9B=8B=EF=BC=88=E7=82=B9=E8=8F=9C=E5=8D=95=E7=AC=AC?= =?UTF-8?q?=E5=9B=9B=E4=B8=AA=E6=8C=89=E9=92=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/ranknote2pic.traw | Bin 0 -> 125572 bytes assets/ranknotepicture.traw | Bin 0 -> 83052 bytes assets/what_is_this_pic.traw | Bin 0 -> 1062412 bytes gamedata/Rank_easydata.txt | 2 + gamedata/{testdata.txt => Rank_harddata.txt} | 0 gamedata/Rank_middata.txt | 3 + gamedata/testdata2.txt | 5 - include/sort.h | 11 ++ src/PainterEngine_Application.c | 123 ++++++++++++--- src/PainterEngine_Startup.c | 4 +- src/sort.c | 157 +++++++++++++++++++ 11 files changed, 278 insertions(+), 27 deletions(-) create mode 100644 assets/ranknote2pic.traw create mode 100644 assets/ranknotepicture.traw create mode 100644 assets/what_is_this_pic.traw create mode 100644 gamedata/Rank_easydata.txt rename gamedata/{testdata.txt => Rank_harddata.txt} (100%) create mode 100644 gamedata/Rank_middata.txt delete mode 100644 gamedata/testdata2.txt create mode 100644 include/sort.h create mode 100644 src/sort.c diff --git a/assets/ranknote2pic.traw b/assets/ranknote2pic.traw new file mode 100644 index 0000000000000000000000000000000000000000..45692427be257f8f0b271f53aa0951c0b2bb66e7 GIT binary patch literal 125572 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 XlRzecOahq%G6`f7$RzOpodo_LejQG< literal 0 HcmV?d00001 diff --git a/assets/what_is_this_pic.traw b/assets/what_is_this_pic.traw new file mode 100644 index 0000000000000000000000000000000000000000..3affef298a6c9c186d4bfee0a256d98376baf52c GIT binary patch literal 1062412 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 literal 912812 zcmeFa2b>+X)%U-U`ab`_lQ)4pl!Q>dym^(Xn_wIVvC9n4LIV;W4(b3V7M*59Lqr3Ld<<`A! z>Xw$3r)o)m$pgs)$pgs)$pgs)$pgs)$pgs)$pgs)$pgs)$pgs)$pgs)$pgs)$pgs) z$pgs)$pgs)$pgs)$pgs)$pcfA2fn(e<-a~3-Lm(Wqg$^3>c*BE6D1#{K9KrA>I10{ zq&|@PK2$p@(qq&|@PKCk_VCpk_VCpk_VCpk_VCpCbb9L!;tXq zq;7>&e)2%_K=MHHK=MHHK=MHHz(9E*;oX7qY|@)NkUWq)kUWq)kUWq)kUTIscp%~3 z$)OdJ4aoz^1IYu)1IYu)1IYu)0|VuOgm(wZvq^9AK=MHHK=MHHK=MHHK=Q!k;DLm9 zCx=!@HY5)u4wK@o8Q9BVgO_O;vDUmT)-nAh4lrSPQ%uRpc8|=qc{C-p4QR2S4(H>)1jQs!7H{5H2&>q z{WoQOf-SF8$7@?gt}!ULB}I}4k_VCpk_VCpk_VCprVtNI5qS5MUwsSQbsAXjO|Vxd zc=8uuy>Amg4&J+9%>O0+{Ysa&w{1t>uWHo#B6%0Dl$#J{N9!krG9GUkF?1=g;eYi> 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 Kh#F|E2L2x|YcFa5 -- Gitee From 3194fb4fd973e91de5bd28e25b1900db54380ccc Mon Sep 17 00:00:00 2001 From: rainy <1072874017@qq.com> Date: Tue, 28 Dec 2021 19:43:45 +0800 Subject: [PATCH 23/27] chore: import CuTest as test unit frame --- .gitignore | 1 - lib/cutest/CuTest.c | 339 +++++++++++++++++++++++++++++++++++++++++ lib/cutest/CuTest.h | 116 ++++++++++++++ lib/cutest/license.txt | 38 +++++ makefile | 24 ++- test/AllTest.c | 35 +++++ 6 files changed, 551 insertions(+), 2 deletions(-) create mode 100644 lib/cutest/CuTest.c create mode 100644 lib/cutest/CuTest.h create mode 100644 lib/cutest/license.txt create mode 100644 test/AllTest.c diff --git a/.gitignore b/.gitignore index b7316f1..d6898c8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ *.exe .vs/ .gitee/ -test/ target/ MineSweeper.zip .git/ \ No newline at end of file diff --git a/lib/cutest/CuTest.c b/lib/cutest/CuTest.c new file mode 100644 index 0000000..8f61199 --- /dev/null +++ b/lib/cutest/CuTest.c @@ -0,0 +1,339 @@ +#include +#include +#include +#include +#include +#include + +#include "CuTest.h" + +/*-------------------------------------------------------------------------* + * CuStr + *-------------------------------------------------------------------------*/ + +char* CuStrAlloc(int size) +{ + char* newStr = (char*) malloc( sizeof(char) * (size) ); + return newStr; +} + +char* CuStrCopy(const char* old) +{ + int len = strlen(old); + char* newStr = CuStrAlloc(len + 1); + strcpy(newStr, old); + return newStr; +} + +/*-------------------------------------------------------------------------* + * CuString + *-------------------------------------------------------------------------*/ + +void CuStringInit(CuString* str) +{ + str->length = 0; + str->size = STRING_MAX; + str->buffer = (char*) malloc(sizeof(char) * str->size); + str->buffer[0] = '\0'; +} + +CuString* CuStringNew(void) +{ + CuString* str = (CuString*) malloc(sizeof(CuString)); + str->length = 0; + str->size = STRING_MAX; + str->buffer = (char*) malloc(sizeof(char) * str->size); + str->buffer[0] = '\0'; + return str; +} + +void CuStringDelete(CuString *str) +{ + if (!str) return; + free(str->buffer); + free(str); +} + +void CuStringResize(CuString* str, int newSize) +{ + str->buffer = (char*) realloc(str->buffer, sizeof(char) * newSize); + str->size = newSize; +} + +void CuStringAppend(CuString* str, const char* text) +{ + int length; + + if (text == NULL) { + text = "NULL"; + } + + length = strlen(text); + if (str->length + length + 1 >= str->size) + CuStringResize(str, str->length + length + 1 + STRING_INC); + str->length += length; + strcat(str->buffer, text); +} + +void CuStringAppendChar(CuString* str, char ch) +{ + char text[2]; + text[0] = ch; + text[1] = '\0'; + CuStringAppend(str, text); +} + +void CuStringAppendFormat(CuString* str, const char* format, ...) +{ + va_list argp; + char buf[HUGE_STRING_LEN]; + va_start(argp, format); + vsprintf(buf, format, argp); + va_end(argp); + CuStringAppend(str, buf); +} + +void CuStringInsert(CuString* str, const char* text, int pos) +{ + int length = strlen(text); + if (pos > str->length) + pos = str->length; + if (str->length + length + 1 >= str->size) + CuStringResize(str, str->length + length + 1 + STRING_INC); + memmove(str->buffer + pos + length, str->buffer + pos, (str->length - pos) + 1); + str->length += length; + memcpy(str->buffer + pos, text, length); +} + +/*-------------------------------------------------------------------------* + * CuTest + *-------------------------------------------------------------------------*/ + +void CuTestInit(CuTest* t, const char* name, TestFunction function) +{ + t->name = CuStrCopy(name); + t->failed = 0; + t->ran = 0; + t->message = NULL; + t->function = function; + t->jumpBuf = NULL; +} + +CuTest* CuTestNew(const char* name, TestFunction function) +{ + CuTest* tc = CU_ALLOC(CuTest); + CuTestInit(tc, name, function); + return tc; +} + +void CuTestDelete(CuTest *t) +{ + if (!t) return; + free(t->name); + free(t); +} + +void CuTestRun(CuTest* tc) +{ + jmp_buf buf; + tc->jumpBuf = &buf; + if (setjmp(buf) == 0) + { + tc->ran = 1; + (tc->function)(tc); + } + tc->jumpBuf = 0; +} + +static void CuFailInternal(CuTest* tc, const char* file, int line, CuString* string) +{ + char buf[HUGE_STRING_LEN]; + + sprintf(buf, "%s:%d: ", file, line); + CuStringInsert(string, buf, 0); + + tc->failed = 1; + tc->message = string->buffer; + if (tc->jumpBuf != 0) longjmp(*(tc->jumpBuf), 0); +} + +void CuFail_Line(CuTest* tc, const char* file, int line, const char* message2, const char* message) +{ + CuString string; + + CuStringInit(&string); + if (message2 != NULL) + { + CuStringAppend(&string, message2); + CuStringAppend(&string, ": "); + } + CuStringAppend(&string, message); + CuFailInternal(tc, file, line, &string); +} + +void CuAssert_Line(CuTest* tc, const char* file, int line, const char* message, int condition) +{ + if (condition) return; + CuFail_Line(tc, file, line, NULL, message); +} + +void CuAssertStrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, + const char* expected, const char* actual) +{ + CuString string; + if ((expected == NULL && actual == NULL) || + (expected != NULL && actual != NULL && + strcmp(expected, actual) == 0)) + { + return; + } + + CuStringInit(&string); + if (message != NULL) + { + CuStringAppend(&string, message); + CuStringAppend(&string, ": "); + } + CuStringAppend(&string, "expected <"); + CuStringAppend(&string, expected); + CuStringAppend(&string, "> but was <"); + CuStringAppend(&string, actual); + CuStringAppend(&string, ">"); + CuFailInternal(tc, file, line, &string); +} + +void CuAssertIntEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, + int expected, int actual) +{ + char buf[STRING_MAX]; + if (expected == actual) return; + sprintf(buf, "expected <%d> but was <%d>", expected, actual); + CuFail_Line(tc, file, line, message, buf); +} + +void CuAssertDblEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, + double expected, double actual, double delta) +{ + char buf[STRING_MAX]; + if (fabs(expected - actual) <= delta) return; + sprintf(buf, "expected <%f> but was <%f>", expected, actual); + + CuFail_Line(tc, file, line, message, buf); +} + +void CuAssertPtrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, + void* expected, void* actual) +{ + char buf[STRING_MAX]; + if (expected == actual) return; + sprintf(buf, "expected pointer <0x%p> but was <0x%p>", expected, actual); + CuFail_Line(tc, file, line, message, buf); +} + + +/*-------------------------------------------------------------------------* + * CuSuite + *-------------------------------------------------------------------------*/ + +void CuSuiteInit(CuSuite* testSuite) +{ + testSuite->count = 0; + testSuite->failCount = 0; + memset(testSuite->list, 0, sizeof(testSuite->list)); +} + +CuSuite* CuSuiteNew(void) +{ + CuSuite* testSuite = CU_ALLOC(CuSuite); + CuSuiteInit(testSuite); + return testSuite; +} + +void CuSuiteDelete(CuSuite *testSuite) +{ + unsigned int n; + for (n=0; n < MAX_TEST_CASES; n++) + { + if (testSuite->list[n]) + { + CuTestDelete(testSuite->list[n]); + } + } + free(testSuite); + +} + +void CuSuiteAdd(CuSuite* testSuite, CuTest *testCase) +{ + assert(testSuite->count < MAX_TEST_CASES); + testSuite->list[testSuite->count] = testCase; + testSuite->count++; +} + +void CuSuiteAddSuite(CuSuite* testSuite, CuSuite* testSuite2) +{ + int i; + for (i = 0 ; i < testSuite2->count ; ++i) + { + CuTest* testCase = testSuite2->list[i]; + CuSuiteAdd(testSuite, testCase); + } +} + +void CuSuiteRun(CuSuite* testSuite) +{ + int i; + for (i = 0 ; i < testSuite->count ; ++i) + { + CuTest* testCase = testSuite->list[i]; + CuTestRun(testCase); + if (testCase->failed) { testSuite->failCount += 1; } + } +} + +void CuSuiteSummary(CuSuite* testSuite, CuString* summary) +{ + int i; + for (i = 0 ; i < testSuite->count ; ++i) + { + CuTest* testCase = testSuite->list[i]; + CuStringAppend(summary, testCase->failed ? "F" : "."); + } + CuStringAppend(summary, "\n\n"); +} + +void CuSuiteDetails(CuSuite* testSuite, CuString* details) +{ + int i; + int failCount = 0; + + if (testSuite->failCount == 0) + { + int passCount = testSuite->count - testSuite->failCount; + const char* testWord = passCount == 1 ? "test" : "tests"; + CuStringAppendFormat(details, "OK (%d %s)\n", passCount, testWord); + } + else + { + if (testSuite->failCount == 1) + CuStringAppend(details, "There was 1 failure:\n"); + else + CuStringAppendFormat(details, "There were %d failures:\n", testSuite->failCount); + + for (i = 0 ; i < testSuite->count ; ++i) + { + CuTest* testCase = testSuite->list[i]; + if (testCase->failed) + { + failCount++; + CuStringAppendFormat(details, "%d) %s: %s\n", + failCount, testCase->name, testCase->message); + } + } + CuStringAppend(details, "\n!!!FAILURES!!!\n"); + + CuStringAppendFormat(details, "Runs: %d ", testSuite->count); + CuStringAppendFormat(details, "Passes: %d ", testSuite->count - testSuite->failCount); + CuStringAppendFormat(details, "Fails: %d\n", testSuite->failCount); + } +} diff --git a/lib/cutest/CuTest.h b/lib/cutest/CuTest.h new file mode 100644 index 0000000..8b32773 --- /dev/null +++ b/lib/cutest/CuTest.h @@ -0,0 +1,116 @@ +#ifndef CU_TEST_H +#define CU_TEST_H + +#include +#include + +#define CUTEST_VERSION "CuTest 1.5" + +/* CuString */ + +char* CuStrAlloc(int size); +char* CuStrCopy(const char* old); + +#define CU_ALLOC(TYPE) ((TYPE*) malloc(sizeof(TYPE))) + +#define HUGE_STRING_LEN 8192 +#define STRING_MAX 256 +#define STRING_INC 256 + +typedef struct +{ + int length; + int size; + char* buffer; +} CuString; + +void CuStringInit(CuString* str); +CuString* CuStringNew(void); +void CuStringRead(CuString* str, const char* path); +void CuStringAppend(CuString* str, const char* text); +void CuStringAppendChar(CuString* str, char ch); +void CuStringAppendFormat(CuString* str, const char* format, ...); +void CuStringInsert(CuString* str, const char* text, int pos); +void CuStringResize(CuString* str, int newSize); +void CuStringDelete(CuString* str); + +/* CuTest */ + +typedef struct CuTest CuTest; + +typedef void (*TestFunction)(CuTest *); + +struct CuTest +{ + char* name; + TestFunction function; + int failed; + int ran; + const char* message; + jmp_buf *jumpBuf; +}; + +void CuTestInit(CuTest* t, const char* name, TestFunction function); +CuTest* CuTestNew(const char* name, TestFunction function); +void CuTestRun(CuTest* tc); +void CuTestDelete(CuTest *t); + +/* Internal versions of assert functions -- use the public versions */ +void CuFail_Line(CuTest* tc, const char* file, int line, const char* message2, const char* message); +void CuAssert_Line(CuTest* tc, const char* file, int line, const char* message, int condition); +void CuAssertStrEquals_LineMsg(CuTest* tc, + const char* file, int line, const char* message, + const char* expected, const char* actual); +void CuAssertIntEquals_LineMsg(CuTest* tc, + const char* file, int line, const char* message, + int expected, int actual); +void CuAssertDblEquals_LineMsg(CuTest* tc, + const char* file, int line, const char* message, + double expected, double actual, double delta); +void CuAssertPtrEquals_LineMsg(CuTest* tc, + const char* file, int line, const char* message, + void* expected, void* actual); + +/* public assert functions */ + +#define CuFail(tc, ms) CuFail_Line( (tc), __FILE__, __LINE__, NULL, (ms)) +#define CuAssert(tc, ms, cond) CuAssert_Line((tc), __FILE__, __LINE__, (ms), (cond)) +#define CuAssertTrue(tc, cond) CuAssert_Line((tc), __FILE__, __LINE__, "assert failed", (cond)) + +#define CuAssertStrEquals(tc,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) +#define CuAssertStrEquals_Msg(tc,ms,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) +#define CuAssertIntEquals(tc,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) +#define CuAssertIntEquals_Msg(tc,ms,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) +#define CuAssertDblEquals(tc,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac),(dl)) +#define CuAssertDblEquals_Msg(tc,ms,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac),(dl)) +#define CuAssertPtrEquals(tc,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) +#define CuAssertPtrEquals_Msg(tc,ms,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) + +#define CuAssertPtrNotNull(tc,p) CuAssert_Line((tc),__FILE__,__LINE__,"null pointer unexpected",(p != NULL)) +#define CuAssertPtrNotNullMsg(tc,msg,p) CuAssert_Line((tc),__FILE__,__LINE__,(msg),(p != NULL)) + +/* CuSuite */ + +#define MAX_TEST_CASES 1024 + +#define SUITE_ADD_TEST(SUITE,TEST) CuSuiteAdd(SUITE, CuTestNew(#TEST, TEST)) + +typedef struct +{ + int count; + CuTest* list[MAX_TEST_CASES]; + int failCount; + +} CuSuite; + + +void CuSuiteInit(CuSuite* testSuite); +CuSuite* CuSuiteNew(void); +void CuSuiteDelete(CuSuite *testSuite); +void CuSuiteAdd(CuSuite* testSuite, CuTest *testCase); +void CuSuiteAddSuite(CuSuite* testSuite, CuSuite* testSuite2); +void CuSuiteRun(CuSuite* testSuite); +void CuSuiteSummary(CuSuite* testSuite, CuString* summary); +void CuSuiteDetails(CuSuite* testSuite, CuString* details); + +#endif /* CU_TEST_H */ diff --git a/lib/cutest/license.txt b/lib/cutest/license.txt new file mode 100644 index 0000000..fd81689 --- /dev/null +++ b/lib/cutest/license.txt @@ -0,0 +1,38 @@ +NOTE + +The license is based on the zlib/libpng license. For more details see +http://www.opensource.org/licenses/zlib-license.html. The intent of the +license is to: + +- keep the license as simple as possible +- encourage the use of CuTest in both free and commercial applications + and libraries +- keep the source code together +- give credit to the CuTest contributors for their work + +If you ship CuTest in source form with your source distribution, the +following license document must be included with it in unaltered form. +If you find CuTest useful we would like to hear about it. + +LICENSE + +Copyright (c) 2003 Asim Jalis + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software in +a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not +be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. diff --git a/makefile b/makefile index 5c584cb..bd016ec 100644 --- a/makefile +++ b/makefile @@ -1,13 +1,19 @@ #mingw32-64 makefile ##################################################### target := MineSweeper.exe +target_test := MineSweeper_test.exe project_path := src +test_path := test painterengine_path := lib\PainterEngine +cutest_path := lib\cutest ##################################################### project_build := $(wildcard $(project_path)/*.c) project_build_o := $(patsubst %.c,%.o,$(project_build)) +test_build := $(wildcard $(test_path)/*.c) +test_build_o := $(patsubst %.c,%.o,$(test_build)) + painterengine_build_core := $(wildcard $(painterengine_path)/core/*.c) painterengine_build_painterengine_o := $(patsubst %.c,%.o,$(painterengine_build_core)) @@ -23,6 +29,9 @@ painterengine_build_painterengine_o += $(patsubst %.c,%.o,$(painterengine_build_ painterengine_build_platform := $(wildcard $(painterengine_path)/platform/windows/*.cpp) painterengine_build_painterengine_o += $(patsubst %.cpp,%.o,$(painterengine_build_platform)) +cutest_build := $(wildcard $(cutest_path)/*.c) +cutest_build_o += $(patsubst %.c,%.o,$(cutest_build)) + include_path = include all:$(project_build_o) $(painterengine_build_painterengine_o) @@ -52,6 +61,11 @@ $(painterengine_path)/core/%.o:$(painterengine_path)/core/%.c $(painterengine_path)/platform/windows/%.o:$(painterengine_path)/platform/windows/%.c gcc -c $^ -o $@ -I "$(project_path)" -I "$(painterengine_path)" -I "$(painterengine_path)/platform/windows" -std=c99 +$(cutest_path)/%.o:$(cutest_path)/%.c + gcc -c $^ -o $@ -std=c99 + +$(test_path)/%.o:$(test_path)/%.c + gcc -c $^ -o $@ -I "$(painterengine_path)" -I "$(include_path)" -I "$(cutest_path)" -I "$(project_path)" -std=c99 .PHONY:clean clean: @@ -61,4 +75,12 @@ clean: # -del /s "$(painterengine_path)\platform\windows\*.o" -del /s "$(project_path)\*.o" - \ No newline at end of file +.PHONY:test +test:$(project_build_o) $(painterengine_build_painterengine_o) $(cutest_build_o) $(test_build_o) + gcc $(test_build_o) $(project_build_o) $(painterengine_build_painterengine_o) $(cutest_build_o) \ + -o $(project_path)\..\$(target_test) \ + -I "$(painterengine_path)" \ + -I "$(project_path)" \ + -I "$(painterengine_path)\platform\windows" \ + -I "$(include_path)" \ + -L. -lwinmm -ld2d1 -lws2_32 -ldsound -lcomdlg32 -std=c99 diff --git a/test/AllTest.c b/test/AllTest.c new file mode 100644 index 0000000..b6ff025 --- /dev/null +++ b/test/AllTest.c @@ -0,0 +1,35 @@ +#include "../lib/cutest/CuTest.h" +#include "../include/map.h" +#include "../include/mine_map.h" + +void TestStrToUpper(CuTest *tc) { + char* input = strdup("hello world"); + char* expected = "HELLO WORLD"; + CuAssertStrEquals(tc, expected, expected); +} + +CuSuite* StrUtilGetSuite() { + CuSuite* suite = CuSuiteNew(); + SUITE_ADD_TEST(suite, TestStrToUpper); + return suite; +} + + + +void RunAllTests(void) { + CuString *output = CuStringNew(); + CuSuite* suite = CuSuiteNew(); + + CuSuiteAddSuite(suite, StrUtilGetSuite());//增加的测试组 + + CuSuiteRun(suite); + CuSuiteSummary(suite, output); + CuSuiteDetails(suite, output); + printf("%s/n", output->buffer); +} + + + +int main(void) { + RunAllTests(); +} \ No newline at end of file -- Gitee From d9efe3d51118fee9eb0b563d48deca4f72ff99ed Mon Sep 17 00:00:00 2001 From: rainy <1072874017@qq.com> Date: Tue, 28 Dec 2021 23:28:05 +0800 Subject: [PATCH 24/27] docs: integrate explanation into readme --- README.md | 39 +++++++++++++------ ...6\344\273\226\350\257\264\346\230\216.txt" | 29 -------------- 2 files changed, 27 insertions(+), 41 deletions(-) delete mode 100644 "\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" diff --git a/README.md b/README.md index 8dbff16..2917809 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,38 @@ # MineSweeper -#### 介绍 +## 介绍 扫雷。 -#### 软件架构 +## 软件架构 基于 `PainterEngine` 实现。 -#### 编译 +## 编译 必须使用 `Threads = win32` 下安装的 `mingw-w64` 进行编译。 在根目录下直接使用 `mingw32-make.exe` 进行编译,编译结果位于 `/MineSweeper.exe`。 -#### TODOList -~~一定会做的~~ +## 细节设计 -- 基础交互 - - [ ] UI - - [x] 逻辑处理 - - [ ] 局面选项(长宽等等) - - [ ] 存档、读档 -- 高级设计 - - [ ] 高级统计 <= 这东西要是做不出来就扔了吧,都不是专业选手 \ No newline at end of file +### 菜单 + +菜单分为四级,在左上方: +- help,展示帮助页面 +- save-to-file,已经有自动存档的功能了,这个按钮没什么用 +- color,改变按钮的颜色 +- 写 UI 的人不让说最后这个是什么 + +### 记录 + +在胜利后如果时间能进入相同模式下前十名就会要求输入名字,名字只能是英文或数字。 + +在gamedata里会有三种不同模式的记录txt文件。 + +如果多于十条记录程序会自动覆盖最末尾的记录。 + +允许自行删除数据。在数据的末尾请不要有换行符谢谢! + +相同时间数据以先来后到的顺序计入。 + +### 排行榜 + +点击排行版若无法获取本次操作的数据请重启程序。排行版最多显示单个模式下六个数据。 \ No newline at end of file diff --git "a/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" "b/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" deleted file mode 100644 index 333910f..0000000 --- "a/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" +++ /dev/null @@ -1,29 +0,0 @@ -关于菜单👇 - -菜单的按钮下设四级,设在左上方。 -help:为帮助页面,如果对游戏不熟悉请使用本功能 -save—to——file:已经实现了自动存盘了,这里只是做一个提示 -color:改变按钮的颜色,这里只能对游戏界面进行按钮颜色的更改,使其更加美丽。 -最后一级不便透露,但强烈建议点击了解。 -———————————————————— -关于记录的数据👇 - -在胜利后如果时间能进入相同模式下前十名就会要求输入名字,名字只能是英文或数字。 -【如果你确认要输入名字,请一定输入内容,不要不输入并点ok!!!】 -【如果你确认要输入名字,请一定输入内容,不要不输入并点ok!!!】 -【如果你确认要输入名字,请一定输入内容,不要不输入并点ok!!!】 -在gamedata里会有三种不同模式的记录txt文件。 -【请不要擅自增加数据!一个txt文件最多有十个数据!请勿人为添加到第十个。】 -【请不要擅自增加数据!一个txt文件最多有十个数据!请勿人为添加到第十个。】 -【请不要擅自增加数据!一个txt文件最多有十个数据!请勿人为添加到第十个。】 -如果多于十条记录程序会自动覆盖最末尾的记录。 -允许自行删除数据。在数据的末尾请不要有换行符谢谢! -相同时间数据以先来后到的顺序计入。 - - -———————————————————— -关于排行版👇 - -点击排行版若无法获取本次操作的数据请重启程序。排行版最多显示单个模式下六个数据。 -———————————————————— -注意:图形库painterengine的版本和网上发布的版本不一样(这个版本有个人的新配置,例如中键的判断),请以本版本为准!!!【不要】从网上下载!!!! \ No newline at end of file -- Gitee From 30118d50b303ca2a772ee4286525b6088d676ad0 Mon Sep 17 00:00:00 2001 From: rainy <1072874017@qq.com> Date: Wed, 29 Dec 2021 00:07:00 +0800 Subject: [PATCH 25/27] test: create Map test suite --- .gitignore | 3 ++- .vscode/settings.json | 3 ++- include/mine_map.h | 2 -- src/map.c | 1 + test/AllTest.c | 20 ++---------------- test/MapTest.c | 47 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 22 deletions(-) create mode 100644 test/MapTest.c diff --git a/.gitignore b/.gitignore index d6898c8..57f030b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ .gitee/ target/ MineSweeper.zip -.git/ \ No newline at end of file +.git/ +.vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 5e33924..d30351e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "files.associations": { - "opt.h": "c" + "opt.h": "c", + "cutest.h": "c" } } \ No newline at end of file diff --git a/include/mine_map.h b/include/mine_map.h index 976b77a..f996979 100644 --- a/include/mine_map.h +++ b/include/mine_map.h @@ -47,5 +47,3 @@ typedef struct map{ #define NUM_MID 40 #define NUM_HARD 99 - -#define DEBUG diff --git a/src/map.c b/src/map.c index c2ca6a9..5227f9f 100644 --- a/src/map.c +++ b/src/map.c @@ -30,6 +30,7 @@ map *CreateMap(int mode) default: break; } + Map -> mode = mode; Map -> generated = false; return Map; } diff --git a/test/AllTest.c b/test/AllTest.c index b6ff025..3206d53 100644 --- a/test/AllTest.c +++ b/test/AllTest.c @@ -1,31 +1,15 @@ #include "../lib/cutest/CuTest.h" -#include "../include/map.h" -#include "../include/mine_map.h" - -void TestStrToUpper(CuTest *tc) { - char* input = strdup("hello world"); - char* expected = "HELLO WORLD"; - CuAssertStrEquals(tc, expected, expected); -} - -CuSuite* StrUtilGetSuite() { - CuSuite* suite = CuSuiteNew(); - SUITE_ADD_TEST(suite, TestStrToUpper); - return suite; -} - - void RunAllTests(void) { CuString *output = CuStringNew(); CuSuite* suite = CuSuiteNew(); - CuSuiteAddSuite(suite, StrUtilGetSuite());//增加的测试组 + CuSuiteAddSuite(suite, MapGetSuite()); CuSuiteRun(suite); CuSuiteSummary(suite, output); CuSuiteDetails(suite, output); - printf("%s/n", output->buffer); + printf("%s\n", output->buffer); } diff --git a/test/MapTest.c b/test/MapTest.c new file mode 100644 index 0000000..f2a92c9 --- /dev/null +++ b/test/MapTest.c @@ -0,0 +1,47 @@ +#include +#include "../lib/cutest/CuTest.h" +#include "../include/map.h" +#include "../include/mine_map.h" + +void TestCreateMap(CuTest *tc) { + map* Map = CreateMap(MODE_EASY); + CuAssertIntEquals_Msg(tc, "X size in easy mode", MX_EASY, Map -> mx); + CuAssertIntEquals_Msg(tc, "Y size in easy mode", MY_EASY, Map -> my); + CuAssertIntEquals_Msg(tc, "cnt in easy mode", NUM_EASY, Map -> cnt); + CuAssertIntEquals_Msg(tc, "mode in easy mode", MODE_EASY, Map -> mode); + CuAssertIntEquals_Msg(tc, "generated in easy mode", 0, Map -> generated); + Map = CreateMap(MODE_MID); + CuAssertIntEquals_Msg(tc, "X size in mid mode", MX_MID, Map -> mx); + CuAssertIntEquals_Msg(tc, "Y size in mid mode", MY_MID, Map -> my); + CuAssertIntEquals_Msg(tc, "cnt in mid mode", NUM_MID, Map -> cnt); + CuAssertIntEquals_Msg(tc, "mode in mid mode", MODE_MID, Map -> mode); + CuAssertIntEquals_Msg(tc, "generated in mid mode", 0, Map -> generated); + Map = CreateMap(MODE_HARD); + CuAssertIntEquals_Msg(tc, "X size in hard mode", MX_HARD, Map -> mx); + CuAssertIntEquals_Msg(tc, "Y size in hard mode", MY_HARD, Map -> my); + CuAssertIntEquals_Msg(tc, "cnt in hard mode", NUM_HARD, Map -> cnt); + CuAssertIntEquals_Msg(tc, "mode in hard mode", MODE_HARD, Map -> mode); + CuAssertIntEquals_Msg(tc, "generated in hard mode", 0, Map -> generated); +} + +void TestSetMine(CuTest *tc) { + srand((int)time(NULL)); + for(int testCases=0;testCases<30;testCases++) { + map* Map = CreateMap(testCases / 10 + 1); // 10 * [easy, mid, hard] + int x = rand() % Map -> mx + 1, y = rand() % Map -> my + 1; + Setmine(Map, x, y, rand()); + for(int i=-1;i<=1;i++) for(int j=-1;j<=1;j++) + CuAssertIntEquals_Msg(tc, "no mine around first click pos", 0, Map -> mineMap[x + i][y + j]); + int cnt = 0; + for(int i=1;i<=Map->mx;i++) for(int j=1;j<=Map->my;j++) + cnt += Map -> mineMap[i][j]; + CuAssertIntEquals_Msg(tc, "cnt in the map", Map -> cnt, cnt); + } +} + +CuSuite* MapGetSuite() { + CuSuite* suite = CuSuiteNew(); + SUITE_ADD_TEST(suite, TestCreateMap); + SUITE_ADD_TEST(suite, TestSetMine); + return suite; +} \ No newline at end of file -- Gitee From 13faab9d6369d93e4b2c5894c03a8307b3844746 Mon Sep 17 00:00:00 2001 From: rainy <1072874017@qq.com> Date: Wed, 29 Dec 2021 00:08:11 +0800 Subject: [PATCH 26/27] doc: add test units to readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 2917809..fc858ef 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,23 @@ # MineSweeper ## 介绍 + 扫雷。 ## 软件架构 + 基于 `PainterEngine` 实现。 ## 编译 + 必须使用 `Threads = win32` 下安装的 `mingw-w64` 进行编译。 在根目录下直接使用 `mingw32-make.exe` 进行编译,编译结果位于 `/MineSweeper.exe`。 +## 测试单元 + +使用 `mingw32-make test` 生成 `/MineSweeper_test.exe`,运行即可。 + ## 细节设计 ### 菜单 -- Gitee From 1d92f7a4c042810264fe9f17f6b9853fed8521ce Mon Sep 17 00:00:00 2001 From: rainy <1072874017@qq.com> Date: Thu, 30 Dec 2021 00:09:01 +0800 Subject: [PATCH 27/27] test: test all feats --- .vscode/c_cpp_properties.json | 21 --------- .vscode/settings.json | 6 --- makefile | 10 +++-- src/opt.c | 3 +- test/AllTest.c | 5 ++- test/OptTest.c | 81 +++++++++++++++++++++++++++++++++++ test/SortTest.c | 20 +++++++++ test/UITest.c | 10 +++++ 8 files changed, 122 insertions(+), 34 deletions(-) delete mode 100644 .vscode/c_cpp_properties.json delete mode 100644 .vscode/settings.json create mode 100644 test/OptTest.c create mode 100644 test/SortTest.c create mode 100644 test/UITest.c diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json deleted file mode 100644 index 78c9843..0000000 --- a/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "configurations": [ - { - "name": "Win32", - "includePath": [ - "${workspaceFolder}/**" - ], - "defines": [ - "_DEBUG", - "UNICODE", - "_UNICODE" - ], - "windowsSdkVersion": "10.0.19041.0", - "compilerPath": "E:/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64/cl.exe", - "cStandard": "c17", - "cppStandard": "c++17", - "intelliSenseMode": "windows-msvc-x64" - } - ], - "version": 4 -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d30351e..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "files.associations": { - "opt.h": "c", - "cutest.h": "c" - } -} \ No newline at end of file diff --git a/makefile b/makefile index bd016ec..34d9593 100644 --- a/makefile +++ b/makefile @@ -69,11 +69,12 @@ $(test_path)/%.o:$(test_path)/%.c .PHONY:clean clean: -# -del /s "$(painterengine_path)\core\*.o" -# -del /s "$(painterengine_path)\kernel\*.o" -# -del /s "$(painterengine_path)\architecture\*.o" -# -del /s "$(painterengine_path)\platform\windows\*.o" + -del /s "$(painterengine_path)\core\*.o" + -del /s "$(painterengine_path)\kernel\*.o" + -del /s "$(painterengine_path)\architecture\*.o" + -del /s "$(painterengine_path)\platform\windows\*.o" -del /s "$(project_path)\*.o" + -del /s "$(test_path)\*.o" .PHONY:test test:$(project_build_o) $(painterengine_build_painterengine_o) $(cutest_build_o) $(test_build_o) @@ -84,3 +85,4 @@ test:$(project_build_o) $(painterengine_build_painterengine_o) $(cutest_build_ -I "$(painterengine_path)\platform\windows" \ -I "$(include_path)" \ -L. -lwinmm -ld2d1 -lws2_32 -ldsound -lcomdlg32 -std=c99 + mingw32-make clean \ No newline at end of file diff --git a/src/opt.c b/src/opt.c index d2e0764..9c6ad53 100644 --- a/src/opt.c +++ b/src/opt.c @@ -94,7 +94,7 @@ int fnOptLeftClick(int x, int y, map *m) * */ bool map_mine; - map_mine = (m->mineMap[x][y] == 1) ? true : false; + map_mine = (m->mineMap[x][y] == 1) ? true : false; // ? /** * @brief 左键实现 * 如果当前格子被标记或者已经打开 @@ -143,6 +143,7 @@ int fnOptRightClick(int x, int y, map *m) return ALLOWED; break; } + return ALLOWED; } int fnOptMidClick(int x, int y, map *m) diff --git a/test/AllTest.c b/test/AllTest.c index 3206d53..ee5d422 100644 --- a/test/AllTest.c +++ b/test/AllTest.c @@ -5,6 +5,9 @@ void RunAllTests(void) { CuSuite* suite = CuSuiteNew(); CuSuiteAddSuite(suite, MapGetSuite()); + CuSuiteAddSuite(suite, OptGetSuite()); + CuSuiteAddSuite(suite, UIGetSuite()); + CuSuiteAddSuite(suite, SortGetSuite()); CuSuiteRun(suite); CuSuiteSummary(suite, output); @@ -12,8 +15,6 @@ void RunAllTests(void) { printf("%s\n", output->buffer); } - - int main(void) { RunAllTests(); } \ No newline at end of file diff --git a/test/OptTest.c b/test/OptTest.c new file mode 100644 index 0000000..47f93aa --- /dev/null +++ b/test/OptTest.c @@ -0,0 +1,81 @@ +#include +#include "../lib/cutest/CuTest.h" +#include "../include/map.h" +#include "../include/mine_map.h" +#include "../include/opt.h" + +void TestOptCount(CuTest *tc) { + for(int i=10;i<40;i++) { + map *Map = CreateMap(i / 10); // 10 * [easy, mid, hard] + Setmine(Map, rand() % Map -> mx + 1, rand() % Map -> my + 1, rand()); + for(int x=1;x<=Map->mx;x++) + for(int y=1;y<=Map->my;y++) { + int cnt = 0; + for(int dx=-1;dx<=1;dx++) + for(int dy=-1;dy<=1;dy++) { + if(dx == 0 && dy == 0) continue; + int tx = x + dx, ty = y + dy; + if(1 <= tx && tx <= Map -> mx && 1 <= ty && ty <= Map -> my) cnt += Map -> mineMap[tx][ty]; + } + CuAssertIntEquals_Msg(tc, "opt_count", cnt, opt_count(Map, x, y)); + } + } +} + +void TestFnOptLeftClick(CuTest *tc) { + for(int testcases=10;testcases<40;testcases++) { + map *Map = CreateMap(testcases / 10); // 10 * [easy, mid, hard] + Setmine(Map, rand() % Map -> mx + 1, rand() % Map -> my + 1, rand()); + for(int i=1;i<=20;i++) { + int x = rand() % Map -> mx + 1, y = rand() % Map -> my + 1, preStage = Map -> stage[x][y]; + int result = fnOptLeftClick(x, y, Map); + if(Map -> mineMap[x][y]) CuAssertIntEquals_Msg(tc, "left click boom", preStage, result); + else CuAssertIntEquals_Msg(tc, "left click safe", BOOM, !result); + } + } +} + +void TestFnOptRightClick(CuTest *tc) { + for(int testcases=10;testcases<40;testcases++) { + map *Map = CreateMap(testcases / 10); // 10 * [easy, mid, hard] + Setmine(Map, rand() % Map -> mx + 1, rand() % Map -> my + 1, rand()); + for(int i=1;i<=20;i++) { + int x = rand() % Map -> mx + 1, y = rand() % Map -> my + 1, preStage = Map -> stage[x][y]; + int result = fnOptRightClick(x, y, Map); + CuAssertIntEquals_Msg(tc, "right click allowed", ALLOWED, result); + CuAssertIntEquals_Msg(tc, "right click change stage", true, preStage != Map -> stage[x][y]); + } + } +} + +void TestFnOptMidClick(CuTest *tc) { + // stage -> UNCOVERED COVERED FLAGED + // testcase definition + map Map; + Map.mx = Map.my = 3; + int testMaps[][3] = {{5, 0, 5}, {7, 0, 0}, {7, 0, 0}, {7, 0, 0}, {3, 0, 2}}; + int testStages[][3] = {{202, 10, 202}, {222, 10, 110}, {220, 210, 110}, {220, 10, 110}, {22, 10, 20}}; + int expectedResults[] = {ALLOWED, ALLOWED, BOOM, UNALLOWED, ALLOWED}; + int expcetedStages[][3] = {{212, 111, 212}, {222, 111, 111}, {221, 211, 111}, {220, 10, 110}, {122, 111, 121}}; + int pow10[] = {1, 10, 100}; + // test + for(int i=0;i<5;i++) { + for(int x=1;x<=3;x++) for(int y=1;y<=3;y++) + Map.mineMap[x][y] = !!(testMaps[i][x-1] & (1 << (y-1))), // !!x -> (bool) x + Map.stage[x][y] = testStages[i][x-1] / pow10[y-1] % 10, + Map.autobook[x][y] = 0; // wtf is this + CuAssertIntEquals_Msg(tc, "mid click result", expectedResults[i], fnOptMidClick(2, 2, &Map)); + for(int x=1;x<=3;x++) for(int y=1;y<=3;y++) + CuAssertIntEquals_Msg(tc, "mid click stage", expcetedStages[i][x-1] / pow10[y-1] % 10, Map.stage[x][y]); + } +} + +CuSuite* OptGetSuite() { + srand((int)time(NULL)); + CuSuite* suite = CuSuiteNew(); + SUITE_ADD_TEST(suite, TestOptCount); + SUITE_ADD_TEST(suite, TestFnOptLeftClick); + SUITE_ADD_TEST(suite, TestFnOptRightClick); + SUITE_ADD_TEST(suite, TestFnOptMidClick); + return suite; +} \ No newline at end of file diff --git a/test/SortTest.c b/test/SortTest.c new file mode 100644 index 0000000..4ca7858 --- /dev/null +++ b/test/SortTest.c @@ -0,0 +1,20 @@ +#include +#include "../lib/cutest/CuTest.h" +#include "../include/map.h" +#include "../include/mine_map.h" +#include "../include/sort.h" // 讲道理,我应该在这个东西写定之前给他来一次 code review,这个命名让我感觉很抽象,为什么这东西直接就被推到远端了。 + +CuSuite* SortGetSuite() { + CuSuite* suite = CuSuiteNew(); + // ?从个人角度来说,我觉得 Sort 运行时能不出 bug 就已经不错了。 + // 这个代码太离奇了,我姑且只能摸清楚运行逻辑,我写不出适合它的单元测试。 + // 现在是 12/29 23:55,报告都还没写,没时间做 code review 然后修改了,那么这个 Test 姑且就不写了。 + + // 我真的忍不住看这个代码,为什么排行榜的数据逻辑要显式暴露为结构体数组并且还不提供任何操作函数啊。 + // 我根本不可能在没有说明或者仔细阅读源码前理解这个模块的使用方法。 + // 从 OOP 角度来说这完全是在逆向完成封装的要求。 + // 如果能让我提早一天看到这个代码,它绝对活不过两个小时。 + + // 原来这个 Sort 是 12/26 被 push 到远端的,那确实是我看代码不及时了,我有错。 + return suite; +} \ No newline at end of file diff --git a/test/UITest.c b/test/UITest.c new file mode 100644 index 0000000..4a869b5 --- /dev/null +++ b/test/UITest.c @@ -0,0 +1,10 @@ +#include +#include "../lib/cutest/CuTest.h" +#include "../include/map.h" +#include "../include/mine_map.h" + +CuSuite* UIGetSuite() { + CuSuite* suite = CuSuiteNew(); + // 这要测?这能测?这咋测? + return suite; +} \ No newline at end of file -- Gitee

cN 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 z zyT*L3e^sz~^s=6G$};Lkonh}Up7R||r#$;JMjiBri1%i%1O2!UW92quYkqA8?ewN` zF8IT9{9(rGMXo~FV=+(MKxj7Bwr@;g4LpKFXpsI0ekc= zSE>oQJVH~Fz#b8uN9Z2t%wB=cV~f_IS>^Hl?RfvhAHEl@a}4I3J}nbKCQ0U-4*c-~ z?(fH1Sr_K$8sLs`g|aS&w#>A)P0!Dic>>V+c;KU*41W^c!`R5+U7ejy>pA$FbNpea zTjLS<-C~{kJD~R#^z|;vWL7$pIfl#`;(EKi{7lcGNBTJIspg~4V`9UBe~3lw+oWT^ zdK|BZ>(D5FNKQ?L2fPO|+!n?J&a~ZLJa05!_#fcUI+J$v>j2IvYyX4#IWOwyukoFZ z^7MGo<-^`;AmG2$Ddw0L^?6YSzHPMMqmR%ojQQJiTw26H_oD1f%h3LQ7TpBs>jji@q~WCF-ghv3=Y8g>337Md+E=(=f0rlP%n(EkSHiP4Gt zjWd|jQhqd&Zv(QitDS=a&3VTk_J*@FUP!sdcBt8 zAd9j-eD!_t`p^C!#$^lo^yhY-=Ifk#F7(SB@Cxx((WkU6gWrai^w38Q-0A7NccEBr#*v9`@MZpP^~s*;gUBRHfIF?;J_kHs~0>Ouy^ zCaa)yA@uX0&ZA`!e0QMAucFTnu%p$!D(V=xqjJ3Juf0$E3AOLusP?ur3-*Y-hx;Y| zfLuUZf2I8YS|aOOLsKGg)By5es8G2dnB((>IDZ;-qv(3Aee~hhGBP=)Oba>eX7DG*M+La31G3X&xaVuxw(TJwAfLtU zLz5Svs}1tpuL}*U6B9C)k=NMJ+P@sbg*c9_G#1mb?yps2Kb)!U!pR?`U9V190#*MHJ$KF z0e!#AHXceuulz3@5Dw`1_#@!Me@~b&;UdZZVft=lb03b8)!FbiY;P7KRxkY1*CXy# z+%~V`w%Mtv6dOPEFSKFe>rXM zdN(Xmoel58&tuzu@8@B)xw0O6i9c4aUM=`TCb@(hFsjQB1^#F;eIsJ6zM=EX z8P!}rryQGvK7{ga2>A=Q-HjNpFbn8g0euK$;zIY4C}#S|U*f$E*uc>ij zi94z$!RGD(ZF|Rf1g$OmS3Zwa-y^{vS^eHi;SL-4 zIYA=2nAgFd3k$s;lj>}_NjOkC91#4GC;SnX%V3j*SgRU`G`yku>mP)?igYrJ!Rxx7 zZrb$Fo(DLDc0ZeEDx>*vm&^;Y;x( zWmNC!DBl>$1RubZM05gag8XAr1)sNJ1t`bqzQ5`{^6f1fPJA z>fZVSa?s5I4w;yOJ_J7MLFhy1|GWzrrUNT&pV8*4!YtBZYTN@W;@%Sq^f@0q8QB zXQL?ah7(&DPs|9G9Zp~RZ2B*obwe+7m>0P>&GNk3Yk%DWiRuCF9n8s2$w4d8tOzjAG7H6FO*Zq>bIx!Sk0MsP=(@0H+>5}j$JS;7I~ zfN(%KARHLxfZ&fb<)rLl5%{PRhwQ4=egl2=55rHLe$HbP$ii0JEb2sHn?)?Lbr$Ti z9#g7|dJ*6e#_-kgv-UUL2-}NI+f`A=0bX=ItBgI1!oD>1;BoM#aICR}HgME;jDemC z`i|P!&|9qlZVaN|c8IBeI zhcvvY`Zg{^{8rckF_(Hm`Phm@kjHQci@=9r_X4Fl5WlGx`SSYUPd#8_l2WkOieL=d zc+qEk5IAFi?F9DfS*DCGY;CZsq7V6I=s1Ya7*kARJ75Y&+bWZn+!J?zpRkY9c2z#!SY|&kkKRzvQ2Efw=sGO*n9s-Ti7R-&rA*=| z(oEXBpMwt!^cs7So1+P~R9o*tyejB6YSCV{I{@Dr?L&TD5_ltmJ;=Ap8?+v(zivMK z%3l(FM;6{4!5_mPXE_oM2nU1%!U5qxiE=>jM;2tLY~qpDmOXl{eP2^GY<`|cY}a{^ ziEq(4wUf_h7?G)oN$4|Dh4p;;jnIdk_D7V{>!BB*eqcMWN#lHF5TERQBCI=L?hE?3 z$J=lZ^$d&~W$b=bm!W-9=*ztUWfS*oxfA8ztJIDM!Z-oz=SZ)U=I1X@v1ERFmamZ4Kc?!{z4Ym9-(4 zB=u9-?CbrpY{4HTI@3tAgag6>;ec>JI55ls!5>A2KZayd;t=>6wC}1{ojcw`PVHyZ z0R7dG=Z-RS%6bv2+^vs+OBnBoIWDT;gI$BTz?A1H*PB}i$4;C1zlj0(EXzRt@37q% z%BKC8E}ync_>cMs-dBSP?c6>;xlyT`(>gZ5Rkple!;oPlrZ z7`o&)@!wD%6zkY2V7k4+A8l=I5`TC2J1AC?pOD{wQEsELl01Iqewd zwS70S$h)d{^HS}bU{pg7pnXMvBa(@q6<01#N0u*=XEYXqZ51&`a0c>}KdQR6t_s^% z!LNfkT13~8YAm<(?)M6Rw70hl{wSoGMraWZ2nU1%!U5sHFb4#GlmPx1#wm#3i@fR@ ziy-G+XTv+ti!6nW)?Dqk9>yckHLOd)@1ayNiT39huWhRaLicJtN7uGjRXbx??b(Jn z$YNhLJg(Bi66riI_+$9vEJwlt;ec>JI3OG-Q4R?HC@K75l@sBcp!Fh+s(sI9_^q#l zzsQT>7+OL2T`<346>OMj6BReVMUm(*65=GA5DpA;K=4P&;t#9*2)zjW7PzL*II->2jqG?Ix$;)3 zz73DS=IBl}SThawN3_?X?+E<0iyD($6K;d{9lr_w`O~#82iw}S`B~_N-U1J5!HWjL z90fN11%C{GoaIP3ARG`52nU1%CCUN89|b0VrDL;_&NE>=(iHI<*`VY4c5QnZ^7+%i zBnyyJ?;hA}-2vGhxTIkHNT|~QR)UWU^8iw>F&Ma24Z?4{zy3khgE+-q+g?!}JJ&^G zRyCl#JHwcxMPgT_Gj6i|jNp$FooS?5!U5rca6mX992n++;E(+jf5gg>&5+A?YuUWD znYe_pwQ99Ld-v8C;2-fgV$j~N{j(|KhjGbNE%R$zF6vE?A0wG)s7PaRF`ReSRmt?QvZRXAQ%v&5__ zl5sBhWBB7NN5TQ&fN(%KARH)B4ha4z61glEFIerXvUA+JH-bs1GXNgZwp;Ke*#{r( zeefsgYG!rEUiGpib5;7$ZBF(+dodNg0{q55q77f0V+^ByA852nU1%!hure zfZz|oA8Fu^bYx#*mPA`R<;pXe$oqx%tl*DQo^GUV!U5rca6mX99MBvP{2}-wNBBc< zLZQj}g-DO!51E;S1Hu8}fN(%KQ1Tpz!5_4nru{VS7}EXq_V$WQE4W6+fQ*5Z$AI9E zlAm*=fx-ddfN(%KARG|A5Do|jN}dB*!5;$y z1FEa5OST;IptG}6c%EaP%Q*M`Js%t#Ojq@)pOg4kB|mRT1BC;^0pWmfptw1Z75tHr z@E{Kh2ZRH{febhx_@lTdC81t8ARG`52nR}@1A;#?kaOfw;ec?U@Him&qvYo;X`paG zI3OGl4iq;B1b-Bs_#_kw2ZRF|a6s@!aZgG@y>LJ{ARG`5lspFne`Fx%$fLpm;XvVW zK=4P&&s)+!;ec>JI3OG-ZVm|kC_M2=C=w0`2QuJ*;E&>-l!SWWfN(%KARH)p4ha6p zK+cgzg#*HY!sCG8kCLCaq=CW#;ec>JI8fXi5d2Yi;*(G$91spm2BaaFPgad`e0mCp9@kd)*n_9hkwHh&E#EJNd|1Y+G$HwoS{DcF- z0pWmfKsX>A$S(&3e-xJZB-988gaa9JK=4O?Cl#q(I3OGl4hRQ?0|_`F_#;DEM;;dr z2nPy_1A;#ieD&pT;ec>JI3OGl4&;{ufARG`52nX`Z0l^=IB{~T;!U5qxh8z(5 zk>5#0Y8MU&2ZRH{0pUOb4#dSDgM))AlWkyNKqb3nQqTVUtQ&v#XPy*N+wJ{RNVJt2 zEsT97@vjnm@#SyffN(%KARG`591DyiJ!j zdmZVPldI=QFTY{T|FL%MT6Ol>Xa5A>zfWWPH*Eag$xk>S91so&2ZRH{f&6m7#2=rW zI(6###2-6$>`?Xf^{TF}&T->^ZkyXP*|_dTgL&Pp&f3~qmB|(gg;YA58$G3Zojgv5 zPv$ehU{J-|%=@yj&t!b0`fN7n&t{qS@oK(riT3vAGC6mu%UT})Z)j*xYu2n$=bd-n zarnf33Y*}M{LVE}yKq1_ARG`52nS3Kd zX_d~lbm>y{)KgDIZPs$0efC+E&St08TBeuBq~Gg}yngPv=Ug}bpXeSw&wIRVtGz7p z*nZ86b9>(v(>ceg**|XkbjGt+&$!W)$@Nsmf3o8v8+~r}%?mHQFnGx&mmG!f+sCo} zD>i=bj)KFCgKgmtK15LDQ#C|LwSO<1QLAX3WTIuf4XskT=j+ zUh134e``ChyY4!l^<0iiV;q=$?Zv)O$AlMcOQsCGBV{+-aKptn-+c4AM;vj)=kR^| z7&dWTfy;wvJ^Mz8{vVB0rxS$ z?-##gpTx%R8ozJi`vE4%PdFeP5Do|jgaZY{0nW`_AN&Y5+DZRAwvWmtJdiOUW1tAf z0KZ@Sj`4d&`%=LkV1oRF1Hu8}fN(%KP@o*3eKhB4*$R&b#D~%^!UGut$&Uf?_bAYb zM#vHl2nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ? z1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|jgag6>;ec>J zI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmfKsX>A5Do|j zgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so&2ZRH{0pWmf zKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rca6mX991so& z2ZRH{0pWmfKsX>A5Do|jgag6>;ec>JI3OGl4hRQ?1Hu8}fN(%KARG`52nU1%!U5rc Ja3D1f{D0U3-^&01 literal 0 HcmV?d00001 diff --git a/gamedata/Rank_easydata.txt b/gamedata/Rank_easydata.txt new file mode 100644 index 0000000..f69eb46 --- /dev/null +++ b/gamedata/Rank_easydata.txt @@ -0,0 +1,2 @@ +testdata 12.58 +testdata2 17.03 diff --git a/gamedata/testdata.txt b/gamedata/Rank_harddata.txt similarity index 100% rename from gamedata/testdata.txt rename to gamedata/Rank_harddata.txt diff --git a/gamedata/Rank_middata.txt b/gamedata/Rank_middata.txt new file mode 100644 index 0000000..168dd25 --- /dev/null +++ b/gamedata/Rank_middata.txt @@ -0,0 +1,3 @@ +jiang 12.111223 +bb 12.000000 +cccc 12.121322 \ No newline at end of file diff --git a/gamedata/testdata2.txt b/gamedata/testdata2.txt deleted file mode 100644 index c3f6d1c..0000000 --- a/gamedata/testdata2.txt +++ /dev/null @@ -1,5 +0,0 @@ -wang 12.34444 -int 293.999999 -char 398.99999 -wode 12.3333 -test5 13.22223 \ No newline at end of file diff --git a/include/sort.h b/include/sort.h new file mode 100644 index 0000000..a27638a --- /dev/null +++ b/include/sort.h @@ -0,0 +1,11 @@ +#pragma once +#include +#include +#include +#define len 10 + +extern char name1[50]; +extern int RANKmode; +extern float duration; +bool is_topten(); +void sort(); \ No newline at end of file diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index e90476c..361c190 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -1,11 +1,13 @@ #include "PainterEngine_Application.h" #include +#include #include #include #include #include "../include/map.h" #include "../include/mine_map.h" #include "../include/opt.h" +#include "../include/sort.h" PX_Application App; @@ -27,15 +29,20 @@ px_texture rank6pic; px_texture ranktitlepicture; //排行版的图片(in rank PX_Object* failpic; +PX_Object* recordname_message; px_texture failpicture;//失败的图片与图片框 px_texture cheerpicture; px_texture modechoose_title_picture; px_texture modechoose_check; px_texture help_title_picture; px_texture help_text_picture; +px_texture what_is_this_pic; +px_texture ranknote2pic; px_texture compass; px_texture modechoose_rank_title_picture; px_texture modechoose_rank_trophypic; +px_texture modechoose_rank_notepic; + px_texture easyrankpic; px_texture midrankpic; px_texture hardrankpic; @@ -58,6 +65,7 @@ int colormode=0; clock_t start,stop; float duration;// 经历的时间 px_char * NAME; +char name1[50]; //////////////////////////////函数声明///////////////////////////////// void WELCOME(); void RANK(); @@ -78,6 +86,8 @@ px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr); void setcol_white(px_void* userptr); void setcol_pink(px_void* userptr); void setcol_purple(px_void* userptr); +void setcol_green(px_void* userptr); +void opencolorfulegg(px_void* userptr); ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// @@ -122,6 +132,10 @@ void Gameinit() PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); } + if(colormode==3){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + } } }printf("debug"); start=clock(); @@ -168,6 +182,10 @@ void Gamenow() if(colormode==2){ PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + } + if(colormode==3){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + } } if (Map->stage[j][i] == FLAGED) @@ -195,6 +213,10 @@ void Gamenow() if(colormode==2){ PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + } + if(colormode==3){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + } } if (Map->stage[j][i] == UNCOVERED) @@ -215,6 +237,10 @@ void Gamenow() PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); } + if(colormode==3){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + } } if (Map->stage[j][i] == COVERED) { @@ -247,6 +273,10 @@ void Gamenow() PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); } + if(colormode==3){ + PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + } } } @@ -282,17 +312,21 @@ px_void* towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { WELCOME(); }//返回欢迎页2(与towelcomeclick没有什么差别,主要是为了debug,如果把一些按钮按下调用的函数towelcome2换成towelcome,就会卡死) -px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { - PX_Object* recordname_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_NULL, congratulation, PX_NULL); - NAME=PX_Object_MessageBoxGetInput(recordname_message); - char text[50]; - sprintf(text, "%d", *NAME); - printf("%s",text); +px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + recordname_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_Object_MessageBoxGetInput(recordname_message), congratulation, PX_NULL); + + + return ; }//如果用户想输入名字就记录名字(因为消息对话框只能显示带有ok与cancel的界面,所以不能强制用户输入姓名) px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + printf("%f",duration); + char * temptext=(char*)ptr; + strcpy(name1,temptext); + //printf("%s",*name1); + sort(duration); PX_Object* winmessage3= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); PX_Object_MessageBoxAlertYesNo(winmessage3, "Do you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); }//为进入排行榜页面前三专门设置的祝福(免得太罗嗦,也免得输入名字的messagebox被吞掉)在recodename输入名字后调用本函数。 @@ -311,13 +345,12 @@ void Gamewin()//游戏胜利 } } - if(mode==1)//如果能冲进前三,请求其输入名字,因为wjj还没有写函数,我就默认mode1的都进入了排行榜,会调用rank函数 + if(is_topten(duration))//如果能冲进前三,请求其输入名字,因为wjj还没有写函数,我就默认mode1的都进入了排行榜,会调用rank函数 { PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); const char* text[50]; sprintf(text, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP TEN!!!\n It takes %.2f s\nMay I know your name?", duration); PX_Object_MessageBoxAlertYesNo(winmessage, text, recordnameY, PX_NULL, congratulation, PX_NULL); - } else { PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); @@ -534,7 +567,7 @@ void RANK() root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 290, 420, 148, 45, "Return", PX_NULL); + PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 40, 420, 160, 45, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); @@ -562,6 +595,8 @@ void RANK() PX_ObjectRegisterEvent(ranktitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); PX_Object *cheer=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 700, 415, 107, 107, &cheerpicture);; PX_ObjectRegisterEvent(cheer, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* ranknote2 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 190, 400, 500, 100, &ranknote2pic); + PX_ObjectRegisterEvent(ranknote2, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); PX_Object* easyrank ; @@ -591,24 +626,44 @@ void RANK() players player[11]; if(RANKmode==1){ FILE *fp1; - fp1=fopen("gamedata\\testdata.txt","r"); + fp1=fopen("gamedata\\Rank_easydata.txt","r"); while(1){ if((fscanf(fp1,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + { break; - else + } + else { valid_data++; + } } } if(RANKmode==2){ FILE *fp2; - fp2=fopen("gamedata\\testdata2.txt","r"); + fp2=fopen("gamedata\\Rank_middata.txt","r"); while(1){ if((fscanf(fp2,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + { + break; + } + else { + valid_data++; + } + } + } + if(RANKmode==3){ + FILE *fp3; + fp3=fopen("gamedata\\Rank_middata.txt","r"); + while(1){ + if((fscanf(fp3,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + { break; - else + } + else { valid_data++; + } } } + //下为根据有效数据的情况判断哪些位置还没有数据,以虚位以待的图片进行代替 @@ -660,19 +715,20 @@ void RANK() char textno5[70]; PX_Object * No6; char textno6[70]; - +//根据有效数据的情况判断需要展示哪些文本框 switch(valid_data){ + case 7:case 8:case 9:case 10:case 11:case 12:case 13: case 6: sprintf(textno6,"NAME: %s \nTIME: %.3f s",player[6].name,player[6].time); - No6=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,200 ,250,250,textno6,PX_NULL,PX_COLOR(140,255,228,196)); + No6=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,210 ,250,250,textno6,PX_NULL,PX_COLOR(140,255,228,196)); PX_ObjectRegisterEvent(No6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 5: sprintf(textno5,"NAME: %s \nTIME: %.3f s",player[5].name,player[5].time); - No5=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,100 ,250,250,textno5,PX_NULL,PX_COLOR(140,255,228,196)); + No5=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,110 ,250,250,textno5,PX_NULL,PX_COLOR(140,255,228,196)); PX_ObjectRegisterEvent(No5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 4: sprintf(textno4,"NAME: %s \nTIME: %.3f s",player[4].name,player[4].time); - No4=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,0 ,250,250,textno4,PX_NULL,PX_COLOR(140,255,228,196)); + No4=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,10 ,250,250,textno4,PX_NULL,PX_COLOR(140,255,228,196)); PX_ObjectRegisterEvent(No4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 3: sprintf(textno3,"NAME: %s \nTIME: %.3f s",player[3].name,player[3].time); @@ -745,6 +801,8 @@ void modechoose_rank() PX_ObjectRegisterEvent(modechoose_rank_title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); PX_Object* modechoose_rank_trophy = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, 360, 290, 200, &modechoose_rank_trophypic); PX_ObjectRegisterEvent(modechoose_rank_trophy, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + PX_Object* modechoose_rank_note = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 150, 360, 590, 200, &modechoose_rank_notepic); + PX_ObjectRegisterEvent(modechoose_rank_note, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); } ///////////////////////////////////////////// @@ -799,6 +857,8 @@ void WELCOME() //初始化函数 PX_Object_MenuAddItem(menubutton, pItem1, "[ white ]", setcol_white, PX_NULL); PX_Object_MenuAddItem(menubutton, pItem1, "[ pink ]", setcol_pink, PX_NULL); PX_Object_MenuAddItem(menubutton, pItem1, "[ purple ]", setcol_purple, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ green ]", setcol_green, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ What is this?????? ]", opencolorfulegg, PX_NULL); // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 } @@ -822,6 +882,12 @@ void setcol_purple(px_void* userptr){ PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PURPLE.It will take effect only in the game interface",PX_NULL,PX_NULL); +} +void setcol_green(px_void* userptr){ + colormode=3; + PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to GREEN.It will take effect only in the game interface",PX_NULL,PX_NULL); + } //下为帮助界面 void openhelp(px_void* userptr) @@ -832,7 +898,6 @@ void openhelp(px_void* userptr) PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 370, 450, 128, 32, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - PX_Object* helptitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 10, 210, 75, &help_title_picture); PX_ObjectRegisterEvent(helptitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); PX_Object* helptext = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, -100, 700, 700, &help_text_picture); @@ -840,6 +905,22 @@ void openhelp(px_void* userptr) PX_Object *compasspic=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 710, 345, 108, 108, &compass);; //第一的图片框(在rank里面 PX_ObjectRegisterEvent(compasspic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + + + return ; +} +void opencolorfulegg(px_void* userptr) +{ + //重新创建根对象 + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); + ///变换界面就删除原页面的object!/// + PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 370, 450, 128, 32, "Return", PX_NULL); + PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); + + PX_Object* what_is_this = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -60, -250, 1000, 1000, &what_is_this_pic); + PX_ObjectRegisterEvent(what_is_this, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + + return ; } @@ -882,9 +963,11 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_title_picture, "assets\\helptitle.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &help_text_picture, "assets\\helptextpic.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &what_is_this_pic, "assets\\what_is_this_pic.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_rank_title_picture, "assets\\modechoose_rankpicture.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_rank_trophypic, "assets\\modechoose_rank_trophy.traw"); - + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &modechoose_rank_notepic, "assets\\ranknotepicture.traw"); + PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &ranknote2pic, "assets\\ranknote2pic.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &compass, "assets\\compass.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &easyrankpic, "assets\\easyrank.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &midrankpic, "assets\\midrank.traw"); diff --git a/src/PainterEngine_Startup.c b/src/PainterEngine_Startup.c index fcb28f0..cf58759 100644 --- a/src/PainterEngine_Startup.c +++ b/src/PainterEngine_Startup.c @@ -16,8 +16,8 @@ px_bool PX_ApplicationInitializeDefault(PX_Runtime *runtime, px_int screen_width surface_width=(px_int)(surface_height*wdh); - window_width=screen_width/2; - window_height=screen_height/2; + window_width=screen_width/1.6; + window_height=screen_height/1.6; if(!PX_RuntimeInitialize(runtime,surface_width,surface_height,window_width,window_height,PX_ApplicationRuntime,sizeof(PX_ApplicationRuntime),PX_APPLICATION_MEMORYPOOL_UI_SIZE,PX_APPLICATION_MEMORYPOOL_RESOURCES_SIZE,PX_APPLICATION_MEMORYPOOL_GAME_SIZE)) diff --git a/src/sort.c b/src/sort.c new file mode 100644 index 0000000..2b4b3fa --- /dev/null +++ b/src/sort.c @@ -0,0 +1,157 @@ +#include +#include +#include +#define len 10 + +extern float duration; +extern int RANKmode; +//定义结构体 +typedef struct +{ + float time; + char name[50]; +}players; + +players player[len]; + +players tmp; + +extern char name1[50]; + + +//判断时间是否能冲进前十 +bool is_topten(){ + //定义一个有效数据的个数 + int valid_data; + FILE *fp1,*fp2,*fp3; + //定义三个文件指针 + fp1 = fopen("gamedata\\Rank_easydata.txt","r"); + fp2 = fopen("gamedata\\Rank_middata.txt","r"); + fp3 = fopen("gamedata\\Rank_harddata.txt","r"); + //选择模式 + for(valid_data = 0;valid_data duration) + break; + else continue; + } +//只在文件中存len(10)个有效数据 +//数据已满 + if(valid_data == len){ + if(j == len-1){ + player[len].time = duration; + strcpy(player[len].name,name1); + } + else{ + for(int h = valid_data-1;h > j;h --){ + player[h] = player[h-1]; + } + player[j].time = duration; + strcpy(player[j].name,name1); + } + for(int count = 0;count < valid_data;count++){ + fprintf(fp4,"%s %.2f\n",player[count].name,player[count].time); + } + return; + } + + for(int h = valid_data;h > j;h --){ + player[h] = player[h-1]; + } + player[j].time = duration; + strcpy(player[j].name,name1); + + for(int count = 0;count <= valid_data;count++){ + fprintf(fp4,"%s %.2f\n",player[count].name,player[count].time); + } + + + fclose(fp1); + fclose(fp2); + fclose(fp3); + fclose(fp4); + + return; +} + + -- Gitee From ee223ca09d6254101b43a433c97b5271537183f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 20:56:13 +0800 Subject: [PATCH 16/27] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86gamedata?= =?UTF-8?q?=E5=9C=A8=E4=B8=AD=E7=BA=A7=E5=92=8C=E5=9B=B0=E9=9A=BE=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=E7=9A=84=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamedata/Rank_harddata.txt | 3 --- gamedata/Rank_middata.txt | 3 --- 2 files changed, 6 deletions(-) diff --git a/gamedata/Rank_harddata.txt b/gamedata/Rank_harddata.txt index 168dd25..e69de29 100644 --- a/gamedata/Rank_harddata.txt +++ b/gamedata/Rank_harddata.txt @@ -1,3 +0,0 @@ -jiang 12.111223 -bb 12.000000 -cccc 12.121322 \ No newline at end of file diff --git a/gamedata/Rank_middata.txt b/gamedata/Rank_middata.txt index 168dd25..e69de29 100644 --- a/gamedata/Rank_middata.txt +++ b/gamedata/Rank_middata.txt @@ -1,3 +0,0 @@ -jiang 12.111223 -bb 12.000000 -cccc 12.121322 \ No newline at end of file -- Gitee From dce0691d6cef7cdf865f495683429a560117a0a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 21:02:31 +0800 Subject: [PATCH 17/27] =?UTF-8?q?bug=20fix=EF=BC=9A=E6=89=93=E5=BC=80?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E5=AF=B9=E5=BA=94=E9=94=99?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PainterEngine_Application.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 361c190..11eaf9c 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -652,7 +652,7 @@ void RANK() } if(RANKmode==3){ FILE *fp3; - fp3=fopen("gamedata\\Rank_middata.txt","r"); + fp3=fopen("gamedata\\Rank_harddata.txt","r"); while(1){ if((fscanf(fp3,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) { -- Gitee From 1476494cd45fd9cd44f6aab8843a467d93335019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 21:25:23 +0800 Subject: [PATCH 18/27] =?UTF-8?q?bug=20fix=EF=BC=9A=E4=B8=8D=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E5=90=8D=E5=AD=97=E4=B8=8D=E8=AE=B0=E5=BD=95=E6=88=90?= =?UTF-8?q?=E7=BB=A9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PainterEngine_Application.c | 12 +++++++--- ...6\344\273\226\350\257\264\346\230\216.txt" | 22 +++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 "\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 11eaf9c..47d0b12 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -82,6 +82,7 @@ void openall(PX_Object* pObject, PX_Object_Event e, px_void* ptr); void openhelp(px_void* userptr); void save_to_file(px_void* userptr); px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr); +px_void* congratulation2(PX_Object* pObject, PX_Object_Event e, px_void* ptr); px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr); void setcol_white(px_void* userptr); void setcol_pink(px_void* userptr); @@ -322,7 +323,7 @@ px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { }//如果用户想输入名字就记录名字(因为消息对话框只能显示带有ok与cancel的界面,所以不能强制用户输入姓名) px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { - printf("%f",duration); + char * temptext=(char*)ptr; strcpy(name1,temptext); //printf("%s",*name1); @@ -330,7 +331,12 @@ px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { PX_Object* winmessage3= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); PX_Object_MessageBoxAlertYesNo(winmessage3, "Do you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); }//为进入排行榜页面前三专门设置的祝福(免得太罗嗦,也免得输入名字的messagebox被吞掉)在recodename输入名字后调用本函数。 - +px_void* congratulation2(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { + + + PX_Object* winmessage3= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertYesNo(winmessage3, "Do you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); +}//若用户点击取消(不输入名字) ////////////////////////////////////////////////////////////////////////////////// void Gamewin()//游戏胜利 { @@ -350,7 +356,7 @@ void Gamewin()//游戏胜利 PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); const char* text[50]; sprintf(text, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP TEN!!!\n It takes %.2f s\nMay I know your name?", duration); - PX_Object_MessageBoxAlertYesNo(winmessage, text, recordnameY, PX_NULL, congratulation, PX_NULL); + PX_Object_MessageBoxAlertYesNo(winmessage, text, recordnameY, PX_NULL, congratulation2, PX_NULL); } else { PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); diff --git "a/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" "b/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" new file mode 100644 index 0000000..17d10b5 --- /dev/null +++ "b/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" @@ -0,0 +1,22 @@ +关于菜单👇 + +菜单的按钮下设四级,设在左上方。 +help:为帮助页面,如果对游戏不熟悉请使用本功能 +save—to——file:已经实现了自动存盘了,这里只是做一个提示 +color:改变按钮的颜色,这里只能对游戏界面进行按钮颜色的更改,使其更加美丽。 +最后一级不便透露,但强烈建议点击了解。 +———————————————————— +关于记录的数据👇 + +在胜利后如果时间能进入相同模式下前十名就会要求输入名字,名字只能是英文或数字。 +在gamedata里会有三种不同模式的记录txt文件。 +【请不要擅自增加数据!一个txt文件最多有十个数据!请勿人为添加到第十个。】 +如果多于十条记录程序会自动覆盖最末尾的记录。 +允许自行删除数据。在数据的末尾请不要有换行符谢谢! +相同时间数据以先来后到的顺序计入。 +———————————————————— +关于排行版👇 + +点击排行版若无法获取本次操作的数据请重启程序。排行版最多显示单个模式下六个数据。 +———————————————————— +注意:图形库painterengine的版本和网上发布的版本不一样(这个版本有个人的新配置,例如中键的判断),请以本版本为准!!!【不要】从网上下载!!!! \ No newline at end of file -- Gitee From d0ab40e240fa45f1c6e7d1c8f0e192e04744fbc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Sun, 26 Dec 2021 22:27:51 +0800 Subject: [PATCH 19/27] =?UTF-8?q?bug=20fix=EF=BC=9A=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E5=90=8D=E5=AD=97=E5=B0=B1=E4=B8=8D=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamedata/Rank_easydata.txt | 2 +- src/PainterEngine_Application.c | 4 ++-- ...17\345\205\266\344\273\226\350\257\264\346\230\216.txt" | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gamedata/Rank_easydata.txt b/gamedata/Rank_easydata.txt index f69eb46..6ba1ce3 100644 --- a/gamedata/Rank_easydata.txt +++ b/gamedata/Rank_easydata.txt @@ -1,2 +1,2 @@ testdata 12.58 -testdata2 17.03 +testdata2 17.03 \ No newline at end of file diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 47d0b12..a67d715 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -65,7 +65,7 @@ int colormode=0; clock_t start,stop; float duration;// 经历的时间 px_char * NAME; -char name1[50]; +char name1[50]="NULL"; //////////////////////////////函数声明///////////////////////////////// void WELCOME(); void RANK(); @@ -316,7 +316,7 @@ px_void* towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { recordname_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_Object_MessageBoxGetInput(recordname_message), congratulation, PX_NULL); + PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_Object_MessageBoxGetInput(recordname_message), congratulation2, PX_NULL); return ; diff --git "a/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" "b/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" index 17d10b5..333910f 100644 --- "a/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" +++ "b/\346\270\270\346\210\217\345\205\266\344\273\226\350\257\264\346\230\216.txt" @@ -9,11 +9,18 @@ color:改变按钮的颜色,这里只能对游戏界面进行按钮颜色的 关于记录的数据👇 在胜利后如果时间能进入相同模式下前十名就会要求输入名字,名字只能是英文或数字。 +【如果你确认要输入名字,请一定输入内容,不要不输入并点ok!!!】 +【如果你确认要输入名字,请一定输入内容,不要不输入并点ok!!!】 +【如果你确认要输入名字,请一定输入内容,不要不输入并点ok!!!】 在gamedata里会有三种不同模式的记录txt文件。 【请不要擅自增加数据!一个txt文件最多有十个数据!请勿人为添加到第十个。】 +【请不要擅自增加数据!一个txt文件最多有十个数据!请勿人为添加到第十个。】 +【请不要擅自增加数据!一个txt文件最多有十个数据!请勿人为添加到第十个。】 如果多于十条记录程序会自动覆盖最末尾的记录。 允许自行删除数据。在数据的末尾请不要有换行符谢谢! 相同时间数据以先来后到的顺序计入。 + + ———————————————————— 关于排行版👇 -- Gitee From 96e2417a8e94021667df60d522a03b64cddaac91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AD=90=E8=AF=BA?= Date: Sun, 26 Dec 2021 23:44:59 +0800 Subject: [PATCH 20/27] style change the path of head files in src to include/ --- .vscode/c_cpp_properties.json | 21 + gamedata/Rank_easydata.txt | 3 +- {src => include}/PainterEngine_Application.h | 0 {src => include}/PainterEngine_Startup.h | 0 makefile | 4 +- src/PainterEngine_Application.c | 891 ++++++++++--------- 6 files changed, 490 insertions(+), 429 deletions(-) create mode 100644 .vscode/c_cpp_properties.json rename {src => include}/PainterEngine_Application.h (100%) rename {src => include}/PainterEngine_Startup.h (100%) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..78c9843 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,21 @@ +{ + "configurations": [ + { + "name": "Win32", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [ + "_DEBUG", + "UNICODE", + "_UNICODE" + ], + "windowsSdkVersion": "10.0.19041.0", + "compilerPath": "E:/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64/cl.exe", + "cStandard": "c17", + "cppStandard": "c++17", + "intelliSenseMode": "windows-msvc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/gamedata/Rank_easydata.txt b/gamedata/Rank_easydata.txt index 6ba1ce3..d7fe675 100644 --- a/gamedata/Rank_easydata.txt +++ b/gamedata/Rank_easydata.txt @@ -1,2 +1,3 @@ testdata 12.58 -testdata2 17.03 \ No newline at end of file +Lizn 16.19 +testdata2 17.03 diff --git a/src/PainterEngine_Application.h b/include/PainterEngine_Application.h similarity index 100% rename from src/PainterEngine_Application.h rename to include/PainterEngine_Application.h diff --git a/src/PainterEngine_Startup.h b/include/PainterEngine_Startup.h similarity index 100% rename from src/PainterEngine_Startup.h rename to include/PainterEngine_Startup.h diff --git a/makefile b/makefile index c9bfb3d..5c584cb 100644 --- a/makefile +++ b/makefile @@ -23,6 +23,7 @@ painterengine_build_painterengine_o += $(patsubst %.c,%.o,$(painterengine_build_ painterengine_build_platform := $(wildcard $(painterengine_path)/platform/windows/*.cpp) painterengine_build_painterengine_o += $(patsubst %.cpp,%.o,$(painterengine_build_platform)) +include_path = include all:$(project_build_o) $(painterengine_build_painterengine_o) gcc $(project_build_o) $(painterengine_build_painterengine_o) \ @@ -30,13 +31,14 @@ all:$(project_build_o) $(painterengine_build_painterengine_o) -I "$(painterengine_path)" \ -I "$(project_path)" \ -I "$(painterengine_path)\platform\windows" \ + -I "$(include_path)" \ -L. -lwinmm -ld2d1 -lws2_32 -ldsound -lcomdlg32 -std=c99 mingw32-make clean $(project_path)/%.o:$(project_path)/%.c - gcc -c $^ -o $@ -I "$(painterengine_path)" -I "$(painterengine_path)/platform/windows" -std=c99 + gcc -c $^ -o $@ -I "$(painterengine_path)" -I "$(painterengine_path)/platform/windows" -I "$(include_path)" -std=c99 $(painterengine_path)/architecture/%.o:$(painterengine_path)/architecture/%.c gcc -c $^ -o $@ -I "$(painterengine_path)" -std=c99 diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index a67d715..44560d5 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -1,36 +1,33 @@ #include "PainterEngine_Application.h" #include -#include +#include #include #include #include -#include "../include/map.h" -#include "../include/mine_map.h" -#include "../include/opt.h" -#include "../include/sort.h" +#include "map.h" +#include "mine_map.h" +#include "opt.h" +#include "sort.h" PX_Application App; PX_Object *root = PX_NULL; //定义根类型 (px必须) PX_Object *cellbutton[40][40]; //定义了十个小格子的按钮 - px_texture titlepicture; //标题的图片(在welcome里面 px_texture potatoboompicture; //标题的图片(在welcome里面 - - -px_texture firstprizepicture; //第一的图片(in rank -px_texture secondprizepicture; //第2的图片(in rank +px_texture firstprizepicture; //第一的图片(in rank +px_texture secondprizepicture; //第2的图片(in rank px_texture thirdprizepicture; -px_texture rank4pic; -px_texture rank5pic; -px_texture rank6pic; -px_texture ranktitlepicture; //排行版的图片(in rank - -PX_Object* failpic; -PX_Object* recordname_message; -px_texture failpicture;//失败的图片与图片框 +px_texture rank4pic; +px_texture rank5pic; +px_texture rank6pic; +px_texture ranktitlepicture; //排行版的图片(in rank + +PX_Object *failpic; +PX_Object *recordname_message; +px_texture failpicture; //失败的图片与图片框 px_texture cheerpicture; px_texture modechoose_title_picture; px_texture modechoose_check; @@ -54,18 +51,17 @@ px_shape flag2; px_shape flag3; //旗帜的图片(in game px_shape mine; px_shape mine2; -px_shape mine3;//雷的图片(in game 数字代表对应困难度下的图片形式,如2代表中等难度 - +px_shape mine3; //雷的图片(in game 数字代表对应困难度下的图片形式,如2代表中等难度 opt_t cell[100][100]; map *Map = NULL; int mode = 1; -int RANKmode=1; -int colormode=0; -clock_t start,stop; -float duration;// 经历的时间 -px_char * NAME; -char name1[50]="NULL"; +int RANKmode = 1; +int colormode = 0; +clock_t start, stop; +float duration; // 经历的时间 +px_char *NAME; +char name1[50] = "NULL"; //////////////////////////////函数声明///////////////////////////////// void WELCOME(); void RANK(); @@ -75,20 +71,20 @@ void Gamenow(); void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void Rclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); -px_void* towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); -void restart(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -px_void* towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) ; -void openall(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -void openhelp(px_void* userptr); -void save_to_file(px_void* userptr); -px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -px_void* congratulation2(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr); -void setcol_white(px_void* userptr); -void setcol_pink(px_void* userptr); -void setcol_purple(px_void* userptr); -void setcol_green(px_void* userptr); -void opencolorfulegg(px_void* userptr); +px_void *towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +void restart(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +px_void *towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +void openall(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +void openhelp(px_void *userptr); +void save_to_file(px_void *userptr); +px_void *congratulation(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +px_void *congratulation2(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +px_void *recordnameY(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +void setcol_white(px_void *userptr); +void setcol_pink(px_void *userptr); +void setcol_purple(px_void *userptr); +void setcol_green(px_void *userptr); +void opencolorfulegg(px_void *userptr); ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// @@ -100,65 +96,86 @@ void Gameinit() //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - - + //初始化map Map = CreateMap(mode); //生成cellbutton - int buttonlong,buttonmovedown; - switch(mode) { - case 1:buttonlong=50;buttonmovedown=0;break; - case 2:buttonlong=31;buttonmovedown=0;break; - case 3:buttonlong=24;buttonmovedown=50;break; - }//根据大小生成buttoncell,buttonlong代表button的宽度,buttonmovedone是对困难模式时按钮向下移动 + int buttonlong, buttonmovedown; + switch (mode) + { + case MODE_EASY: + buttonlong = 50; + buttonmovedown = 0; + break; + case MODE_MID: + buttonlong = 31; + buttonmovedown = 0; + break; + case MODE_HARD: + buttonlong = 24; + buttonmovedown = 50; + break; + } //根据大小生成buttoncell,buttonlong代表button的宽度,buttonmovedone是对困难模式时按钮向下移动 for (int i = 1; i <= Map->my; i++) { for (int j = 1; j <= Map->mx; j++) { cell[j][i].y = i; cell[j][i].x = j; // j行i列 x行y - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1 + i * buttonlong - buttonlong, 5 + j * buttonlong - buttonlong + buttonmovedown, buttonlong - 1, buttonlong - 1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); //生成结束cellbutton,下为根据colormode扫雷页面cellbutton的更改颜色 - if(colormode==0){ - ;//白色就用原来的配色,所以不管 + if (colormode == 0) + { + ; //白色就用原来的配色,所以不管 } - if(colormode==1){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + if (colormode == 1) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); } - if(colormode==2){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + if (colormode == 2) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); } - if(colormode==3){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + if (colormode == 3) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); } } - }printf("debug"); - start=clock(); - return ; + } + start = clock(); + return; } int failed = 0; - - void Gamenow() { root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// // printf("debug"); - int buttonlong,buttonmovedown; - switch(mode) { - case 1:buttonlong=50;buttonmovedown=0;break; - case 2:buttonlong=31;buttonmovedown=0;break; - case 3:buttonlong=24;buttonmovedown=50;break; - }//根据大小生成buttoncell,buttonlong代表button的宽度,buttonmovedone是对困难模式时按钮向下移动(使得它不那么靠上) + int buttonlong, buttonmovedown; + switch (mode) + { + case MODE_EASY: + buttonlong = 50; + buttonmovedown = 0; + break; + case MODE_MID: + buttonlong = 31; + buttonmovedown = 0; + break; + case MODE_HARD: + buttonlong = 24; + buttonmovedown = 50; + break; + } //根据大小生成buttoncell,buttonlong代表button的宽度,buttonmovedone是对困难模式时按钮向下移动(使得它不那么靠上) for (int i = 1; i <= Map->my; i++) { for (int j = 1; j <= Map->mx; j++) @@ -169,91 +186,101 @@ void Gamenow() if (Map->stage[j][i] == MARKED) { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i* buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, "?", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1 + i * buttonlong - buttonlong, 5 + j * buttonlong - buttonlong + buttonmovedown, buttonlong - 1, buttonlong - 1, "?", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); - if(colormode==0){ - ;//白色就用原来的配色,所以不管 + if (colormode == 0) + { + ; //白色就用原来的配色,所以不管 } - if(colormode==1){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); - + if (colormode == 1) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); } - if(colormode==2){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); - + if (colormode == 2) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); } - if(colormode==3){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); - + if (colormode == 3) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); } } if (Map->stage[j][i] == FLAGED) { - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1 + i * buttonlong - buttonlong, 5 + j * buttonlong - buttonlong + buttonmovedown, buttonlong - 1, buttonlong - 1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); - if(mode==1){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &flag); + if (mode == MODE_EASY) + { + PX_Object_PushButtonSetShape(cellbutton[j][i], &flag); } - if(mode==2){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &flag2); - }if(mode==3){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &flag3); + if (mode == MODE_MID) + { + PX_Object_PushButtonSetShape(cellbutton[j][i], &flag2); + } + if (mode == MODE_HARD) + { + PX_Object_PushButtonSetShape(cellbutton[j][i], &flag3); } //不同的mode对应flag的不同大小。 - if(colormode==0){ - ;//白色就用原来的配色,所以不管 - } - if(colormode==1){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); - + if (colormode == 0) + { + ; //白色就用原来的配色,所以不管 } - if(colormode==2){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); - + if (colormode == 1) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); } - if(colormode==3){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); - + if (colormode == 2) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); + } + if (colormode == 3) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); } } if (Map->stage[j][i] == UNCOVERED) { // printf("uncover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1 + i * buttonlong - buttonlong, 5 + j * buttonlong - buttonlong + buttonmovedown, buttonlong - 1, buttonlong - 1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); - if(colormode==0){ - ;//白色就用原来的配色,所以不管 + if (colormode == 0) + { + ; //白色就用原来的配色,所以不管 } - if(colormode==1){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); + if (colormode == 1) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); } - if(colormode==2){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); + if (colormode == 2) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); } - if(colormode==3){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + if (colormode == 3) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); } } if (Map->stage[j][i] == COVERED) { // printf("cover%d %d\n", j, i); - cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1+i * buttonlong-buttonlong, 5+j * buttonlong-buttonlong+buttonmovedown, buttonlong-1, buttonlong-1, " ", PX_NULL); + cellbutton[j][i] = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 1 + i * buttonlong - buttonlong, 5 + j * buttonlong - buttonlong + buttonmovedown, buttonlong - 1, buttonlong - 1, " ", PX_NULL); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_EXECUTE, Lclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORRDOWN, Rclickcell, &cell[j][i]); PX_ObjectRegisterEvent(cellbutton[j][i], PX_OBJECT_EVENT_CURSORMDOWN, Mclickcell, &cell[j][i]); if (opt_count(Map, j, i) == 0) { PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(32, 255, 255, 255)); - //标记为黑色按钮 + //标记为黑色按钮 } else { @@ -263,117 +290,124 @@ void Gamenow() if (count) PX_Object_PushButtonSetText(cellbutton[j][i], text); - if(colormode==0){ - ;//白色就用原来的配色,所以不管 - } - if(colormode==1){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,238,130,238) ); - } - if(colormode==2){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,106,90,205) ); - } - if(colormode==3){ - PX_Object_PushButtonSetBorderColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); - PX_Object_PushButtonSetCursorColor( cellbutton[j][i],PX_COLOR(255,46,139,87) ); + if (colormode == 0) + { + ; //白色就用原来的配色,所以不管 + } + if (colormode == 1) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 238, 130, 238)); + } + if (colormode == 2) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 106, 90, 205)); + } + if (colormode == 3) + { + PX_Object_PushButtonSetBorderColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); + PX_Object_PushButtonSetCursorColor(cellbutton[j][i], PX_COLOR(255, 46, 139, 87)); + } } - } - } } } //下为设置restart和open all 的按钮的语句 px_int buttonx; - if(mode==3){ - buttonx=730; - }else{ - buttonx=600; + if (mode == 3) + { + buttonx = 730; } - PX_Object* restartbutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,350,150,40, "Restart", PX_NULL); - PX_ObjectRegisterEvent(restartbutton, PX_OBJECT_EVENT_EXECUTE, restart, PX_NULL);//重开本局,相同难度模式下 - PX_Object* openallbutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,300,150,40, "Open all", PX_NULL); - PX_ObjectRegisterEvent(openallbutton, PX_OBJECT_EVENT_EXECUTE, openall, PX_NULL);//打开所有格子 + else + { + buttonx = 600; + } + PX_Object *restartbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx, 350, 150, 40, "Restart", PX_NULL); + PX_ObjectRegisterEvent(restartbutton, PX_OBJECT_EVENT_EXECUTE, restart, PX_NULL); //重开本局,相同难度模式下 + PX_Object *openallbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx, 300, 150, 40, "Open all", PX_NULL); + PX_ObjectRegisterEvent(openallbutton, PX_OBJECT_EVENT_EXECUTE, openall, PX_NULL); //打开所有格子 return; } -void restart(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ +void restart(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ Gameinit(); return; } ////////////////////////////////////////////////////////////////////////////////// -px_void* playagain(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { - printf("重开游戏中请稍后"); +px_void *playagain(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ + printf("\nRestarting...\n"); Gameinit(); -}//重新开始 +} //重新开始 -px_void* towelcomeclick(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { - printf("正在返回主页"); +px_void *towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ + printf("\nReturning....\n"); WELCOME(); -}//返回欢迎页2(与towelcomeclick没有什么差别,主要是为了debug,如果把一些按钮按下调用的函数towelcome2换成towelcome,就会卡死) - - -px_void* recordnameY(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { - recordname_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxInputBox(recordname_message,"Enter your name please ",congratulation, PX_Object_MessageBoxGetInput(recordname_message), congratulation2, PX_NULL); - - - return ; -}//如果用户想输入名字就记录名字(因为消息对话框只能显示带有ok与cancel的界面,所以不能强制用户输入姓名) - -px_void* congratulation(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { - - char * temptext=(char*)ptr; - strcpy(name1,temptext); - //printf("%s",*name1); +} //返回欢迎页2(与towelcomeclick没有什么差别,主要是为了debug,如果把一些按钮按下调用的函数towelcome2换成towelcome,就会卡死) + +px_void *recordnameY(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ + recordname_message = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxInputBox(recordname_message, "Enter your name please ", congratulation, PX_Object_MessageBoxGetInput(recordname_message), congratulation2, PX_NULL); + + return; +} //如果用户想输入名字就记录名字(因为消息对话框只能显示带有ok与cancel的界面,所以不能强制用户输入姓名) + +px_void *congratulation(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ + + char *temptext = (char *)ptr; + strcpy(name1, temptext); + // printf("%s",*name1); sort(duration); - PX_Object* winmessage3= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object *winmessage3 = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); PX_Object_MessageBoxAlertYesNo(winmessage3, "Do you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); -}//为进入排行榜页面前三专门设置的祝福(免得太罗嗦,也免得输入名字的messagebox被吞掉)在recodename输入名字后调用本函数。 -px_void* congratulation2(PX_Object* pObject, PX_Object_Event e, px_void* ptr) { - - - PX_Object* winmessage3= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); +} //为进入排行榜页面前三专门设置的祝福(免得太罗嗦,也免得输入名字的messagebox被吞掉)在recodename输入名字后调用本函数。 +px_void *congratulation2(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ + + PX_Object *winmessage3 = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); PX_Object_MessageBoxAlertYesNo(winmessage3, "Do you want to paly again?", playagain, PX_NULL, towelcomeclick, PX_NULL); -}//若用户点击取消(不输入名字) +} //若用户点击取消(不输入名字) ////////////////////////////////////////////////////////////////////////////////// -void Gamewin()//游戏胜利 +void Gamewin() //游戏胜利 { - stop=clock();//暂停时间 - duration=(float)(stop-start)/CLK_TCK;//获取时间 以s为单位。 - printf("you win,TIME %f",duration); + stop = clock(); //暂停时间 + duration = (float)(stop - start) / CLK_TCK; //获取时间 以s为单位。 + printf("you win,TIME %f", duration); for (int i = 1; i <= Map->my; i++) { for (int j = 1; j <= Map->mx; j++) - { - PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE);//使得所有按钮无效,无法继续点击! + { + PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE); //使得所有按钮无效,无法继续点击! } } - if(is_topten(duration))//如果能冲进前三,请求其输入名字,因为wjj还没有写函数,我就默认mode1的都进入了排行榜,会调用rank函数 + if (is_topten(duration)) //如果能冲进前三,请求其输入名字,因为wjj还没有写函数,我就默认mode1的都进入了排行榜,会调用rank函数 { - PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - const char* text[50]; - sprintf(text, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP TEN!!!\n It takes %.2f s\nMay I know your name?", duration); - PX_Object_MessageBoxAlertYesNo(winmessage, text, recordnameY, PX_NULL, congratulation2, PX_NULL); + PX_Object *winmessage = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + const char *text[50]; + sprintf(text, "WOW!!!!!!!!!!\nYou Win!\nAND You're in the TOP TEN!!!\n It takes %.2f s\nMay I know your name?", duration); + PX_Object_MessageBoxAlertYesNo(winmessage, text, recordnameY, PX_NULL, congratulation2, PX_NULL); } - else { - PX_Object* winmessage= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - const char* text2[50]; - sprintf(text2, "Congradulation!\nYou Win!\nIt takes %.2f s\nDo you want to paly again?", duration); - PX_Object_MessageBoxAlertYesNo(winmessage, text2, playagain, PX_NULL, towelcomeclick, PX_NULL); + else + { + PX_Object *winmessage = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + const char *text2[50]; + sprintf(text2, "Congradulation!\nYou Win!\nIt takes %.2f s\nDo you want to paly again?", duration); + PX_Object_MessageBoxAlertYesNo(winmessage, text2, playagain, PX_NULL, towelcomeclick, PX_NULL); } - - } - -void Gamefail()//游戏失败 +void Gamefail() //游戏失败 { - stop=clock();//暂停时间就不管了 + stop = clock(); //暂停时间就不管了 failed = 1; - + for (int i = 1; i <= Map->my; i++) { for (int j = 1; j <= Map->mx; j++) @@ -381,50 +415,55 @@ void Gamefail()//游戏失败 if (Map->mineMap[j][i] == 1) { PX_Object_PushButtonSetText(cellbutton[j][i], " "); - if(mode==1){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &mine); + if (mode == 1) + { + PX_Object_PushButtonSetShape(cellbutton[j][i], &mine); } - if(mode==2){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &mine2); + if (mode == 2) + { + PX_Object_PushButtonSetShape(cellbutton[j][i], &mine2); } - if(mode==3){ - PX_Object_PushButtonSetShape(cellbutton[j][i], &mine3); + if (mode == 3) + { + PX_Object_PushButtonSetShape(cellbutton[j][i], &mine3); } //根据mode调整雷的图片(shape)的大小 PX_Object_PushButtonSetTextColor(cellbutton[j][i], PX_COLOR(255, 255, 0, 0)); } PX_ObjectSetEnabled(cellbutton[j][i], PX_FALSE); //使得所有按钮无效,无法继续点击! } - } printf("You lose"); - if(mode==3) - { - failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 720, 20, 200, 80, &failpicture); - } - else{ - failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 570, 20, 200, 80, &failpicture); - } - PX_ObjectRegisterEvent(failpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - - px_int buttonx; - if(mode==3){ - buttonx=730; - }else{ - buttonx=600; - } + if (mode == 3) + { + failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 720, 20, 200, 80, &failpicture); + } + else + { + failpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 570, 20, 200, 80, &failpicture); + } + PX_ObjectRegisterEvent(failpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + + px_int buttonx; + if (mode == 3) + { + buttonx = 730; + } + else + { + buttonx = 600; + } - PX_Object* returnwelcomebutton= PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx,400,150,40, "Return", PX_NULL); - PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, PX_NULL);//创建一个return按钮使得玩家可以返回主界面选择难度 - //为困难模式单独适配按钮的位置 - + PX_Object *returnwelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx, 400, 150, 40, "Return", PX_NULL); + PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, PX_NULL); //创建一个return按钮使得玩家可以返回主界面选择难度 + //为困难模式单独适配按钮的位置 } ////////////////////////////////////////////////////////////////////////////////// //左中右键的控制&open all的控制函数 void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { - if (PX_ObjectIsCursorInRegion(pObject, e))//检测鼠标操作是否在范围内 + if (PX_ObjectIsCursorInRegion(pObject, e)) //检测鼠标操作是否在范围内 { opt_t *pcell = (opt_t *)ptr; @@ -432,7 +471,7 @@ void Lclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) int temp; temp = fnOptLeftClick(pcell->x, pcell->y, Map); - if (temp==BOOM) + if (temp == BOOM) { Gamefail(); } //是雷就失败 @@ -485,11 +524,11 @@ void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { Gamenow(); } - } } -void openall(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ +void openall(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ if (PX_ObjectIsCursorInRegion(pObject, e)) { opt_t *pcell = (opt_t *)ptr; @@ -501,7 +540,7 @@ void openall(PX_Object* pObject, PX_Object_Event e, px_void* ptr){ } else { - + Gamefail(); } } @@ -523,7 +562,7 @@ void cmid(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - mode=2; + mode = 2; Gameinit(); } } @@ -532,7 +571,7 @@ void chard(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - mode=3; + mode = 3; Gameinit(); } } @@ -540,141 +579,143 @@ void chard(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //下为模式选择界面(进入游戏时的模式选择) void modechoose() { - + //删除之前的按钮(如果有 - - root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); - + + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); + //重新创建根对象 - PX_Object* easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); + PX_Object *easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy, &easymode); - PX_Object* midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 250, 228, 64, "middle", PX_NULL); + PX_Object *midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 250, 228, 64, "middle", PX_NULL); PX_ObjectRegisterEvent(midmode, PX_OBJECT_EVENT_EXECUTE, cmid, &midmode); - PX_Object* hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); + PX_Object *hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard, &hardmode); - PX_Object* modechoose_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 20, 300, 90, &modechoose_title_picture); + PX_Object *modechoose_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 20, 300, 90, &modechoose_title_picture); PX_ObjectRegisterEvent(modechoose_title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* modechoose_checkpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 450, 300, 90, &modechoose_check); + PX_Object *modechoose_checkpic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 450, 300, 90, &modechoose_check); PX_ObjectRegisterEvent(modechoose_checkpic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); } ///////////////////////////////////////////////////// -//rank 组件 - +// rank 组件 void RANK() { - - + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!(由Painterengine provide)/// - PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 40, 420, 160, 45, "Return", PX_NULL); + PX_Object *towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 40, 420, 160, 45, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - - //第一二三名排版 - PX_Object* firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 90, 75, 75, &firstprizepicture); + PX_Object *firstprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 90, 75, 75, &firstprizepicture); PX_ObjectRegisterEvent(firstprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* secondprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 190, 75, 75, &secondprizepicture); + PX_Object *secondprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 190, 75, 75, &secondprizepicture); PX_ObjectRegisterEvent(secondprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* thirdprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 290, 75, 75, &thirdprizepicture); + PX_Object *thirdprize = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -5, 290, 75, 75, &thirdprizepicture); PX_ObjectRegisterEvent(thirdprize, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object *divid_line=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 360, -35, 6, 550, &dividline);; + PX_Object *divid_line = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 360, -35, 6, 550, &dividline); + ; PX_ObjectRegisterEvent(divid_line, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* rank4 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 90, 75, 75, &rank4pic); + PX_Object *rank4 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 90, 75, 75, &rank4pic); PX_ObjectRegisterEvent(rank4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* rank5 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 190, 75, 75, &rank5pic); + PX_Object *rank5 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 190, 75, 75, &rank5pic); PX_ObjectRegisterEvent(rank5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* rank6 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 290, 75, 75, &rank6pic); + PX_Object *rank6 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 370, 290, 75, 75, &rank6pic); PX_ObjectRegisterEvent(rank6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - - PX_Object* ranktitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 280, 0, 210, 75, &ranktitlepicture); + PX_Object *ranktitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 280, 0, 210, 75, &ranktitlepicture); PX_ObjectRegisterEvent(ranktitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object *cheer=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 700, 415, 107, 107, &cheerpicture);; + PX_Object *cheer = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 700, 415, 107, 107, &cheerpicture); + ; PX_ObjectRegisterEvent(cheer, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* ranknote2 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 190, 400, 500, 100, &ranknote2pic); + PX_Object *ranknote2 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 190, 400, 500, 100, &ranknote2pic); PX_ObjectRegisterEvent(ranknote2, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - - PX_Object* easyrank ; - PX_Object* midrank ; - PX_Object* hardrank ; - switch(RANKmode){ + PX_Object *easyrank; + PX_Object *midrank; + PX_Object *hardrank; + switch (RANKmode) + { case 1: - easyrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &easyrankpic); - PX_ObjectRegisterEvent(easyrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - break; + easyrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &easyrankpic); + PX_ObjectRegisterEvent(easyrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + break; case 2: - midrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &midrankpic); - PX_ObjectRegisterEvent(midrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - break; + midrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &midrankpic); + PX_ObjectRegisterEvent(midrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + break; case 3: - hardrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &hardrankpic); - PX_ObjectRegisterEvent(hardrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - break; - }//根据选择的排行版模式难度对应不同的提示图片(右侧标有简单困难的小旗帜) + hardrank = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 750, -12, 100, 150, &hardrankpic); + PX_ObjectRegisterEvent(hardrank, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + break; + } //根据选择的排行版模式难度对应不同的提示图片(右侧标有简单困难的小旗帜) - int valid_data=0; + int valid_data = 0; typedef struct { char name[50]; float time; - }players; + } players; players player[11]; - if(RANKmode==1){ + if (RANKmode == 1) + { FILE *fp1; - fp1=fopen("gamedata\\Rank_easydata.txt","r"); - while(1){ - if((fscanf(fp1,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + fp1 = fopen("gamedata\\Rank_easydata.txt", "r"); + while (1) + { + if ((fscanf(fp1, "%s %f", player[valid_data + 1].name, &player[valid_data + 1].time)) == EOF) { - break; + break; } - else { - valid_data++; + else + { + valid_data++; } } } - if(RANKmode==2){ + if (RANKmode == 2) + { FILE *fp2; - fp2=fopen("gamedata\\Rank_middata.txt","r"); - while(1){ - if((fscanf(fp2,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + fp2 = fopen("gamedata\\Rank_middata.txt", "r"); + while (1) + { + if ((fscanf(fp2, "%s %f", player[valid_data + 1].name, &player[valid_data + 1].time)) == EOF) { - break; + break; } - else { - valid_data++; + else + { + valid_data++; } } } - if(RANKmode==3){ + if (RANKmode == 3) + { FILE *fp3; - fp3=fopen("gamedata\\Rank_harddata.txt","r"); - while(1){ - if((fscanf(fp3,"%s %f",player[valid_data+1].name,&player[valid_data+1].time))==EOF) + fp3 = fopen("gamedata\\Rank_harddata.txt", "r"); + while (1) + { + if ((fscanf(fp3, "%s %f", player[valid_data + 1].name, &player[valid_data + 1].time)) == EOF) { - break; + break; } - else { - valid_data++; + else + { + valid_data++; } } } - - -//下为根据有效数据的情况判断哪些位置还没有数据,以虚位以待的图片进行代替 - - + //下为根据有效数据的情况判断哪些位置还没有数据,以虚位以待的图片进行代替 PX_Object *waiting_fordata1; PX_Object *waiting_fordata2; @@ -682,78 +723,85 @@ void RANK() PX_Object *waiting_fordata4; PX_Object *waiting_fordata5; PX_Object *waiting_fordata6; - switch(valid_data) + switch (valid_data) { case 0: - waiting_fordata1=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 100, 250, 50, &waiting_fordata);; - PX_ObjectRegisterEvent(waiting_fordata1, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + waiting_fordata1 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 100, 250, 50, &waiting_fordata); + ; + PX_ObjectRegisterEvent(waiting_fordata1, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 1: - waiting_fordata2=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 200, 250, 50, &waiting_fordata);; - PX_ObjectRegisterEvent(waiting_fordata2, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + waiting_fordata2 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 200, 250, 50, &waiting_fordata); + ; + PX_ObjectRegisterEvent(waiting_fordata2, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 2: - waiting_fordata3=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 310, 250, 50, &waiting_fordata);; - PX_ObjectRegisterEvent(waiting_fordata3, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + waiting_fordata3 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 70, 310, 250, 50, &waiting_fordata); + ; + PX_ObjectRegisterEvent(waiting_fordata3, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 3: - waiting_fordata4=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 100, 250, 50, &waiting_fordata);; - PX_ObjectRegisterEvent(waiting_fordata4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - case 4 - :waiting_fordata5=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 200, 250, 50, &waiting_fordata);; - PX_ObjectRegisterEvent(waiting_fordata5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + waiting_fordata4 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 100, 250, 50, &waiting_fordata); + ; + PX_ObjectRegisterEvent(waiting_fordata4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + case 4: + waiting_fordata5 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 200, 250, 50, &waiting_fordata); + ; + PX_ObjectRegisterEvent(waiting_fordata5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); case 5: - waiting_fordata6=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 310, 250, 50, &waiting_fordata); - PX_ObjectRegisterEvent(waiting_fordata6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - default :break; - + waiting_fordata6 = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 440, 310, 250, 50, &waiting_fordata); + PX_ObjectRegisterEvent(waiting_fordata6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); + default: + break; } - - - - PX_Object * No1; - char textno1[70]; - PX_Object * No2; - char textno2[70]; - PX_Object * No3; - char textno3[70]; - PX_Object * No4; - char textno4[70]; - PX_Object * No5; - char textno5[70]; - PX_Object * No6; - char textno6[70]; -//根据有效数据的情况判断需要展示哪些文本框 - switch(valid_data){ - case 7:case 8:case 9:case 10:case 11:case 12:case 13: - case 6: - sprintf(textno6,"NAME: %s \nTIME: %.3f s",player[6].name,player[6].time); - No6=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,210 ,250,250,textno6,PX_NULL,PX_COLOR(140,255,228,196)); + PX_Object *No1; + char textno1[70]; + PX_Object *No2; + char textno2[70]; + PX_Object *No3; + char textno3[70]; + PX_Object *No4; + char textno4[70]; + PX_Object *No5; + char textno5[70]; + PX_Object *No6; + char textno6[70]; + //根据有效数据的情况判断需要展示哪些文本框 + switch (valid_data) + { + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 6: + sprintf(textno6, "NAME: %s \nTIME: %.3f s", player[6].name, player[6].time); + No6 = PX_Object_LabelCreate(&App.runtime.mp_resources, root, 480, 210, 250, 250, textno6, PX_NULL, PX_COLOR(140, 255, 228, 196)); PX_ObjectRegisterEvent(No6, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - case 5: - sprintf(textno5,"NAME: %s \nTIME: %.3f s",player[5].name,player[5].time); - No5=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,110 ,250,250,textno5,PX_NULL,PX_COLOR(140,255,228,196)); + case 5: + sprintf(textno5, "NAME: %s \nTIME: %.3f s", player[5].name, player[5].time); + No5 = PX_Object_LabelCreate(&App.runtime.mp_resources, root, 480, 110, 250, 250, textno5, PX_NULL, PX_COLOR(140, 255, 228, 196)); PX_ObjectRegisterEvent(No5, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - case 4: - sprintf(textno4,"NAME: %s \nTIME: %.3f s",player[4].name,player[4].time); - No4=PX_Object_LabelCreate(&App.runtime.mp_resources, root,480,10 ,250,250,textno4,PX_NULL,PX_COLOR(140,255,228,196)); + case 4: + sprintf(textno4, "NAME: %s \nTIME: %.3f s", player[4].name, player[4].time); + No4 = PX_Object_LabelCreate(&App.runtime.mp_resources, root, 480, 10, 250, 250, textno4, PX_NULL, PX_COLOR(140, 255, 228, 196)); PX_ObjectRegisterEvent(No4, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - case 3: - sprintf(textno3,"NAME: %s \nTIME: %.3f s",player[3].name,player[3].time); - No3=PX_Object_LabelCreate(&App.runtime.mp_resources, root,100,210 ,250,250,textno3,PX_NULL,PX_COLOR(140,255,228,196)); + case 3: + sprintf(textno3, "NAME: %s \nTIME: %.3f s", player[3].name, player[3].time); + No3 = PX_Object_LabelCreate(&App.runtime.mp_resources, root, 100, 210, 250, 250, textno3, PX_NULL, PX_COLOR(140, 255, 228, 196)); PX_ObjectRegisterEvent(No3, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - case 2: - sprintf(textno2,"NAME: %s \nTIME: %.3f s",player[2].name,player[2].time); - No2=PX_Object_LabelCreate(&App.runtime.mp_resources, root,100,110 ,250,250,textno2,PX_NULL,PX_COLOR(140,255,228,196)); + case 2: + sprintf(textno2, "NAME: %s \nTIME: %.3f s", player[2].name, player[2].time); + No2 = PX_Object_LabelCreate(&App.runtime.mp_resources, root, 100, 110, 250, 250, textno2, PX_NULL, PX_COLOR(140, 255, 228, 196)); PX_ObjectRegisterEvent(No2, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - case 1: - sprintf(textno1,"NAME: %s \nTIME: %.3f s",player[1].name,player[1].time); - No1=PX_Object_LabelCreate(&App.runtime.mp_resources, root,100,10 ,250,250,textno1,PX_NULL,PX_COLOR(140,255,228,196)); + case 1: + sprintf(textno1, "NAME: %s \nTIME: %.3f s", player[1].name, player[1].time); + No1 = PX_Object_LabelCreate(&App.runtime.mp_resources, root, 100, 10, 250, 250, textno1, PX_NULL, PX_COLOR(140, 255, 228, 196)); PX_ObjectRegisterEvent(No1, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - case 0:break; - - + case 0: + break; } - return; } ///////////////////////////////////////////////////////////////////////// @@ -771,7 +819,7 @@ void cmid_rank(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - RANKmode=2; + RANKmode = 2; RANK(); } } @@ -780,7 +828,7 @@ void chard_rank(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { if (PX_ObjectIsCursorInRegion(pObject, e)) { - RANKmode=3; + RANKmode = 3; RANK(); } } @@ -788,31 +836,31 @@ void chard_rank(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //下为模式选择界面(进入排行时的模式选择) void modechoose_rank() { - + //删除之前的按钮(如果有 - - root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); - + + root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); + //重新创建根对象 - - PX_Object* easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); + + PX_Object *easymode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 150, 228, 64, "easy", PX_NULL); PX_ObjectRegisterEvent(easymode, PX_OBJECT_EVENT_EXECUTE, ceasy_rank, &easymode); - PX_Object* midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 250, 228, 64, "middle", PX_NULL); + PX_Object *midmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 250, 228, 64, "middle", PX_NULL); PX_ObjectRegisterEvent(midmode, PX_OBJECT_EVENT_EXECUTE, cmid_rank, &midmode); - PX_Object* hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); + PX_Object *hardmode = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 318, 350, 228, 64, "hard", PX_NULL); PX_ObjectRegisterEvent(hardmode, PX_OBJECT_EVENT_EXECUTE, chard_rank, &hardmode); - PX_Object* modechoose_rank_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 20, 290, 120, &modechoose_rank_title_picture); + PX_Object *modechoose_rank_title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 290, 20, 290, 120, &modechoose_rank_title_picture); PX_ObjectRegisterEvent(modechoose_rank_title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* modechoose_rank_trophy = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, 360, 290, 200, &modechoose_rank_trophypic); + PX_Object *modechoose_rank_trophy = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, 360, 290, 200, &modechoose_rank_trophypic); PX_ObjectRegisterEvent(modechoose_rank_trophy, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* modechoose_rank_note = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 150, 360, 590, 200, &modechoose_rank_notepic); + PX_Object *modechoose_rank_note = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 150, 360, 590, 200, &modechoose_rank_notepic); PX_ObjectRegisterEvent(modechoose_rank_note, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); } ///////////////////////////////////////////// -//welcome 组件 +// welcome 组件 px_void beginclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //开始按钮的跳转 { @@ -822,7 +870,7 @@ px_void beginclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //开始 px_void rankingclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) //排名按钮的跳转 { - + printf("Is ranking\t"); modechoose_rank(); } @@ -831,7 +879,7 @@ void WELCOME() //初始化函数 { ///变换界面就删除原页面的object!(由Painterengine provide)/// //删除之前的按钮(如果有 - + //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!/// @@ -843,102 +891,95 @@ void WELCOME() //初始化函数 PX_Object *rankingbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 490, 400, 228, 64, "RANK", PX_NULL); PX_ObjectRegisterEvent(rankingbutton, PX_OBJECT_EVENT_EXECUTE, rankingclick, &rankingbutton); - - - - PX_Object *title = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 40, -225, 800, 800, &titlepicture); PX_ObjectRegisterEvent(title, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); PX_Object *potatoboom = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 2, 415, 110, 105, &potatoboompicture); PX_ObjectRegisterEvent(potatoboom, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); //这是MENU - PX_Object_Menu_Item *pItem,*pItem1; + PX_Object_Menu_Item *pItem, *pItem1; PX_Object *menubutton = PX_Object_MenuCreate(&App.runtime.mp_ui, root, 10, 10, 200, PX_NULL); - pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "_______< M e N u >_______", PX_NULL, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem, "[ H E L P ]", openhelp, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem, "[ Save to file ]", save_to_file, PX_NULL); - pItem1=PX_Object_MenuAddItem(menubutton, pItem, "[ Color ]", PX_NULL, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem1, "[ white ]", setcol_white, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem1, "[ pink ]", setcol_pink, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem1, "[ purple ]", setcol_purple, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem1, "[ green ]", setcol_green, PX_NULL); - PX_Object_MenuAddItem(menubutton, pItem, "[ What is this?????? ]", opencolorfulegg, PX_NULL); - + pItem = PX_Object_MenuAddItem(menubutton, PX_Object_MenuGetRootItem(menubutton), "_______< M e N u >_______", PX_NULL, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ H E L P ]", openhelp, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ Save to file ]", save_to_file, PX_NULL); + pItem1 = PX_Object_MenuAddItem(menubutton, pItem, "[ Color ]", PX_NULL, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ white ]", setcol_white, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ pink ]", setcol_pink, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ purple ]", setcol_purple, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem1, "[ green ]", setcol_green, PX_NULL); + PX_Object_MenuAddItem(menubutton, pItem, "[ What is this?????? ]", opencolorfulegg, PX_NULL); + // ↑可以用一个回调函数!!!!!!必须先创建一个px_void callback(px_void* userptr)函数,【函数名可以任意取】在函数里写东西 } ////////////////////////////////////////////////////////////// //下为menu的返回函数 //下为颜色返回函数 -void setcol_white(px_void* userptr){ - colormode=0; - PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to WHITE.It will take effect in the game interface",PX_NULL,PX_NULL); +void setcol_white(px_void *userptr) +{ + colormode = 0; + PX_Object *setcolor = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor, "The cells' color has changed to WHITE.It will take effect in the game interface", PX_NULL, PX_NULL); return; } -void setcol_pink(px_void* userptr){ - colormode=1; - PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PINK.It will take effect only in the game interface",PX_NULL,PX_NULL); - +void setcol_pink(px_void *userptr) +{ + colormode = 1; + PX_Object *setcolor = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor, "The cells' color has changed to PINK.It will take effect only in the game interface", PX_NULL, PX_NULL); } -void setcol_purple(px_void* userptr){ - colormode=2; - PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to PURPLE.It will take effect only in the game interface",PX_NULL,PX_NULL); - +void setcol_purple(px_void *userptr) +{ + colormode = 2; + PX_Object *setcolor = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor, "The cells' color has changed to PURPLE.It will take effect only in the game interface", PX_NULL, PX_NULL); } -void setcol_green(px_void* userptr){ - colormode=3; - PX_Object* setcolor= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(setcolor,"The cells' color has changed to GREEN.It will take effect only in the game interface",PX_NULL,PX_NULL); - +void setcol_green(px_void *userptr) +{ + colormode = 3; + PX_Object *setcolor = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(setcolor, "The cells' color has changed to GREEN.It will take effect only in the game interface", PX_NULL, PX_NULL); } //下为帮助界面 -void openhelp(px_void* userptr) +void openhelp(px_void *userptr) { //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!/// - PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 370, 450, 128, 32, "Return", PX_NULL); + PX_Object *towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 370, 450, 128, 32, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - - PX_Object* helptitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 10, 210, 75, &help_title_picture); + + PX_Object *helptitle = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 330, 10, 210, 75, &help_title_picture); PX_ObjectRegisterEvent(helptitle, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object* helptext = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, -100, 700, 700, &help_text_picture); + PX_Object *helptext = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 90, -100, 700, 700, &help_text_picture); PX_ObjectRegisterEvent(helptext, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - PX_Object *compasspic=PX_Object_ImageCreate(&App.runtime.mp_resources, root, 710, 345, 108, 108, &compass);; //第一的图片框(在rank里面 + PX_Object *compasspic = PX_Object_ImageCreate(&App.runtime.mp_resources, root, 710, 345, 108, 108, &compass); + ; //第一的图片框(在rank里面 PX_ObjectRegisterEvent(compasspic, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - - - - return ; + + return; } -void opencolorfulegg(px_void* userptr) +void opencolorfulegg(px_void *userptr) { //重新创建根对象 root = PX_ObjectCreate(&App.runtime.mp_ui, PX_NULL, 0, 0, 0, 0, 0, 0); ///变换界面就删除原页面的object!/// - PX_Object* towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 370, 450, 128, 32, "Return", PX_NULL); + PX_Object *towelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, 370, 450, 128, 32, "Return", PX_NULL); PX_ObjectRegisterEvent(towelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick, &towelcomebutton); - - PX_Object* what_is_this = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -60, -250, 1000, 1000, &what_is_this_pic); + + PX_Object *what_is_this = PX_Object_ImageCreate(&App.runtime.mp_resources, root, -60, -250, 1000, 1000, &what_is_this_pic); PX_ObjectRegisterEvent(what_is_this, PX_OBJECT_EVENT_ANY, PX_NULL, PX_NULL); - - - return ; + + return; } -void save_to_file(px_void* userptr) +void save_to_file(px_void *userptr) { - PX_Object* save_to_file_message= PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); - PX_Object_MessageBoxAlertOk(save_to_file_message," We automatically save it when win.\nYou can check it in the gamedata folder.\nWe only record the top ten of each mode",PX_NULL,PX_NULL); + PX_Object *save_to_file_message = PX_Object_MessageBoxCreate(&App.runtime.mp_ui, root, PX_NULL); + PX_Object_MessageBoxAlertOk(save_to_file_message, " We automatically save it when win.\nYou can check it in the gamedata folder.\nWe only record the top ten of each mode", PX_NULL, PX_NULL); return; } - - /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// @@ -949,9 +990,8 @@ void save_to_file(px_void* userptr) px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_int screen_height) //初始化函数(px内部) { + SetConsoleTitle("MineSweeper_info"); PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height); - - //以下为欢迎页图片 PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &titlepicture, "assets\\titlepicture2.traw"); //加载图片!! @@ -985,7 +1025,6 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &rank5pic, "assets\\rank5.traw"); PX_LoadTextureFromFile(&pApp->runtime.mp_resources, &rank6pic, "assets\\rank6.traw"); - PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag, "assets\\flagpicture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag2, "assets\\flag2picture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &flag3, "assets\\flag3picture.traw"); @@ -993,8 +1032,6 @@ px_bool PX_ApplicationInitialize(PX_Application *pApp, px_int screen_width, px_i PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine2, "assets\\mine2picture.traw"); PX_LoadShapeFromFile(&pApp->runtime.mp_resources, &mine3, "assets\\mine3picture.traw"); - - WELCOME(); //直接前往welcome函数 return PX_TRUE; -- Gitee From a6428922f037f0483ac14fcb9ace78f274d91ca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Mon, 27 Dec 2021 13:12:27 +0800 Subject: [PATCH 21/27] =?UTF-8?q?1.=E4=B8=BA=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=92=8C=E6=B8=B8=E6=88=8F=E6=AD=A3=E5=9C=A8?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=A2=9E=E5=8A=A0=E4=BA=86return=E6=8C=89?= =?UTF-8?q?=E9=92=AE=202.=E5=8F=AF=E4=BB=A5=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/PainterEngine/platform/windows/px_main.c | 2 +- src/PainterEngine_Application.c | 25 ++++++++++++++++++-- {include => src}/PainterEngine_Application.h | 0 {include => src}/PainterEngine_Startup.h | 2 +- 4 files changed, 25 insertions(+), 4 deletions(-) rename {include => src}/PainterEngine_Application.h (100%) rename {include => src}/PainterEngine_Startup.h (97%) diff --git a/lib/PainterEngine/platform/windows/px_main.c b/lib/PainterEngine/platform/windows/px_main.c index 0d185c8..4b54646 100644 --- a/lib/PainterEngine/platform/windows/px_main.c +++ b/lib/PainterEngine/platform/windows/px_main.c @@ -299,7 +299,7 @@ void setCurrentDirectory() setCurrentDirectory(); PX_srand(time(NULL)); if(!PX_ApplicationInitialize(&App,PX_GetScreenWidth(),PX_GetScreenHeight()))return 0; - if(!PX_CreateWindow(App.runtime.surface_width,App.runtime.surface_height,App.runtime.window_width,App.runtime.window_height,PX_APPLICATION_NAME)) + if(!PX_CreateWindow(App.runtime.surface_width,App.runtime.surface_height,App.runtime.window_width,App.runtime.window_height,"MineSweeper")) { return 0; } diff --git a/src/PainterEngine_Application.c b/src/PainterEngine_Application.c index 44560d5..e645b68 100644 --- a/src/PainterEngine_Application.c +++ b/src/PainterEngine_Application.c @@ -73,7 +73,7 @@ void Rclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void Mclickcell(PX_Object *pObject, PX_Object_Event e, px_void *ptr); px_void *towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void restart(PX_Object *pObject, PX_Object_Event e, px_void *ptr); -px_void *towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr); +px_void *towelcomeclick2(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void openall(PX_Object *pObject, PX_Object_Event e, px_void *ptr); void openhelp(px_void *userptr); void save_to_file(px_void *userptr); @@ -149,6 +149,18 @@ void Gameinit() } } start = clock(); + + px_int buttonx; + if (mode == 3) + { + buttonx = 730; + } + else + { + buttonx = 600; + } + PX_Object *returnwelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx, 400, 150, 40, "Return", PX_NULL); + PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick2, PX_NULL);//初始化时的一个return按钮。 return; } @@ -327,6 +339,8 @@ void Gamenow() PX_ObjectRegisterEvent(restartbutton, PX_OBJECT_EVENT_EXECUTE, restart, PX_NULL); //重开本局,相同难度模式下 PX_Object *openallbutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx, 300, 150, 40, "Open all", PX_NULL); PX_ObjectRegisterEvent(openallbutton, PX_OBJECT_EVENT_EXECUTE, openall, PX_NULL); //打开所有格子 + PX_Object *returnwelcomebutton = PX_Object_PushButtonCreate(&App.runtime.mp_ui, root, buttonx, 400, 150, 40, "Return", PX_NULL); + PX_ObjectRegisterEvent(returnwelcomebutton, PX_OBJECT_EVENT_EXECUTE, towelcomeclick2, PX_NULL);//初始化时的一个return按钮。 return; } @@ -347,7 +361,14 @@ px_void *towelcomeclick(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { printf("\nReturning....\n"); WELCOME(); -} //返回欢迎页2(与towelcomeclick没有什么差别,主要是为了debug,如果把一些按钮按下调用的函数towelcome2换成towelcome,就会卡死) +} +px_void *towelcomeclick2(PX_Object *pObject, PX_Object_Event e, px_void *ptr) +{ + stop = clock(); + printf("\nReturning....\n"); + WELCOME(); +} +//返回欢迎页2(增加了停止计时) px_void *recordnameY(PX_Object *pObject, PX_Object_Event e, px_void *ptr) { diff --git a/include/PainterEngine_Application.h b/src/PainterEngine_Application.h similarity index 100% rename from include/PainterEngine_Application.h rename to src/PainterEngine_Application.h diff --git a/include/PainterEngine_Startup.h b/src/PainterEngine_Startup.h similarity index 97% rename from include/PainterEngine_Startup.h rename to src/PainterEngine_Startup.h index d2019f6..b956284 100644 --- a/include/PainterEngine_Startup.h +++ b/src/PainterEngine_Startup.h @@ -5,7 +5,7 @@ //Configures #include "platform/modules/px_file.h" -#define PX_APPLICATION_NAME "PainterEngine" +#define PX_APPLICATION_NAME "MineSweeper" #define PX_APPLICATION_SURFACE_SIZE 680 #define PX_APPLICATION_MEMORYPOOL_UI_SIZE 1024*1024*16 -- Gitee From 37fbb5d0ccfa8ce37e1bf99fc84bc4e527b3409a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A8=E6=85=8E=E8=B0=A6=E8=99=9A?= <419875574@qq.com> Date: Mon, 27 Dec 2021 20:23:43 +0800 Subject: [PATCH 22/27] =?UTF-8?q?=E9=94=99=E5=88=AB=E5=AD=97=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/helptextpic.traw | Bin 912812 -> 912812 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/helptextpic.traw b/assets/helptextpic.traw index aab8fdeeea55ebf6484ddb6001780708f4b376e5..5dd2e127f4b69c3f28dc05694c9ec15686d74342 100644 GIT binary patch literal 912812 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