feat(MCU课设): 增加部分扫雷代码
This commit is contained in:
parent
25c07e4a0d
commit
a52a764eb2
6 changed files with 98 additions and 10 deletions
|
@ -293,6 +293,18 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>1</GroupNumber>
|
||||||
|
<FileNumber>8</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>.\mine.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>mine.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
|
@ -303,7 +315,7 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>8</FileNumber>
|
<FileNumber>9</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -315,7 +327,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>9</FileNumber>
|
<FileNumber>10</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -327,7 +339,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>10</FileNumber>
|
<FileNumber>11</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -339,7 +351,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>11</FileNumber>
|
<FileNumber>12</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -351,7 +363,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>12</FileNumber>
|
<FileNumber>13</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -363,7 +375,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>13</FileNumber>
|
<FileNumber>14</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -375,7 +387,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>14</FileNumber>
|
<FileNumber>15</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -387,7 +399,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>15</FileNumber>
|
<FileNumber>16</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -399,7 +411,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>16</FileNumber>
|
<FileNumber>17</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -409,6 +421,18 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>18</FileNumber>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>.\mine.h</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>mine.h</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
</ProjectOpt>
|
</ProjectOpt>
|
||||||
|
|
|
@ -411,6 +411,11 @@
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>.\eeprom.c</FilePath>
|
<FilePath>.\eeprom.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>mine.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\mine.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
|
@ -461,6 +466,11 @@
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<FilePath>.\eeprom.h</FilePath>
|
<FilePath>.\eeprom.h</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>mine.h</FileName>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<FilePath>.\mine.h</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
</Groups>
|
</Groups>
|
||||||
|
|
|
@ -3,5 +3,6 @@
|
||||||
|
|
||||||
enum OPR {left,right,confirm,idle};
|
enum OPR {left,right,confirm,idle};
|
||||||
enum GS {__idle,start,good,over};
|
enum GS {__idle,start,good,over};
|
||||||
|
enum MGS {_idle,mstart,mgood,mover};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -28,8 +28,9 @@ enum OPR opr = idle;
|
||||||
static unsigned int local[4] = {0};
|
static unsigned int local[4] = {0};
|
||||||
unsigned int score;
|
unsigned int score;
|
||||||
unsigned int bestScore[10];
|
unsigned int bestScore[10];
|
||||||
|
unsigned int mBestScore[10];
|
||||||
extern enum GS blockGameStatus;
|
extern enum GS blockGameStatus;
|
||||||
|
extern enum GS mineGameStatus;
|
||||||
|
|
||||||
//寮꽉데
|
//寮꽉데
|
||||||
void m_mainmenu(struct _menu* this)
|
void m_mainmenu(struct _menu* this)
|
||||||
|
|
50
MCU/MCU_REAL_FINAL/mine.c
Normal file
50
MCU/MCU_REAL_FINAL/mine.c
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "mine.h"
|
||||||
|
#include "button.h"
|
||||||
|
#include <reg52.h>
|
||||||
|
|
||||||
|
enum MGS mineGameStatus = _idle;
|
||||||
|
extern unsigned int mBestScore[];
|
||||||
|
char mbase[MAX_MX][MAX_MY] = {0}; //x*y //0为空 -1为有雷 整数为雷的个数
|
||||||
|
extern unsigned int score;
|
||||||
|
extern enum OPR opr;
|
||||||
|
|
||||||
|
|
||||||
|
unsigned mIsIegal(int i, int j)
|
||||||
|
{
|
||||||
|
if(i >= 0 && i < MAX_MX && j >= 0 && j < MAX_MY)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int findSum(int i, int j)
|
||||||
|
{
|
||||||
|
int re = 0;
|
||||||
|
if(mbase[i][j] == -1)
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mIsIegal(i, j + 1) ? re += mbase[i][j + 1] : 0;
|
||||||
|
mIsIegal(i, j - 1) ? re += mbase[i][j - 1] : 0;
|
||||||
|
mIsIegal(i + 1, j) ? re += mbase[i + 1][j] : 0;
|
||||||
|
mIsIegal(i - 1, j) ? re += mbase[i - 1][j] : 0;
|
||||||
|
mIsIegal(i - 1, j + 1) ? re += mbase[i - 1][j + 1] : 0;
|
||||||
|
mIsIegal(i + 1, j + 1) ? re += mbase[i + 1][j + 1] : 0;
|
||||||
|
mIsIegal(i - 1, j - 1) ? re += mbase[i - 1][j - 1] : 0;
|
||||||
|
mIsIegal(i + 1, j - 1) ? re += mbase[i + 1][j - 1] : 0;
|
||||||
|
}
|
||||||
|
return re;
|
||||||
|
}
|
||||||
|
|
||||||
|
void genMine()
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
score = 0;
|
||||||
|
srand((unsigned)TL0);
|
||||||
|
for(i = 0; i < MAX_MY; i++)
|
||||||
|
mbase[rand() % 10][i] = -1;
|
||||||
|
for(i = 0; i < MAX_MX; i++)
|
||||||
|
for(j = 0; j < MAX_MX; j++)
|
||||||
|
mbase[j][i] = findSum(j, i);
|
||||||
|
mineGameStatus = start;
|
||||||
|
}
|
2
MCU/MCU_REAL_FINAL/mine.h
Normal file
2
MCU/MCU_REAL_FINAL/mine.h
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#define MAX_MX 8
|
||||||
|
#define MAX_MY 8
|
Reference in a new issue