以下是引用闲出屁在2012-2-4 21:43:26的发言:
// 能读写文件了,就能做很多事儿了,
// 还记得在讲while那儿写的小游戏吧?里面的排行榜还没有实现,那现在就来实现它
#include
#include // srand rand system
#include // time
#include
// 读取排行榜
void ReadList(int num[], int nLen)
{
FILE* fp = fopen("record.txt", "rt");
if (fp == NULL)
{
printf("文件打开错误!\n");
return;
}
char szBuf[100] = "";
int nCount = 0;
while (fgets(szBuf, 100, fp) != NULL)
{
num[nCount] = atoi(szBuf); // atoi将字符串转换为整形数字
nCount ++;
if (nCount >= nLen)
break;
}
fclose(fp);
}
// 保存排行榜
void SaveList(int num[], int nLen)
{
FILE* fp = fopen("record.txt", "wt");
if (fp == NULL)
{
printf("文件打开错误!\n");
return;
}
for (int i=0; i<NLEN; I++)
{
fprintf(fp, "%d\n", num);
}
fclose(fp);
}
// 对整形数组从小到大排序
void SortInt(int num[], int nLen)
{
for (int i=0; i<NLEN; I++)
{
if (num == 0)
return;
for (int j=i; j<NLEN; J++)
{
if (num[j] == 0)
return;
if (num > num[j])
{
int t = num;
num = num[j];
num[j] = t;
}
}
}
}
// 在数组的指定位置开始,把这个位置上和后面的所有数组向后移动一个位置
void MoveIntArr(int num[], int nLen, int nStart)
{
for (int i=nLen-2; i>=nStart; i--)
{
num1] = num;
}
}
// 输出排行榜
void ShowList(int num[], int nLen)
{
printf("排行榜:\n");
for (int i=0; i<NLEN; I++)
{
printf(" %2d, %d 次\n", i+1, num);
}
}
// 将一个成绩插入排行榜中
void InsertList(int num[], int nLen, int nInsert)
{
SortInt(num, nLen);
for (int i=0; i<NLEN; I++)
{
if (num > nInsert || num == 0)
{
MoveIntArr(num, nLen, i);
num = nInsert;
break;
}
}
}
// 主菜单
void MainMenu()
{
printf("\t我的游戏\n");
printf("1.开始游戏\n");
printf("2.排行榜\n");
printf("3.游戏设置\n");
printf("4.退出\n");
}
// 游戏过程
void Game()
{
int nCount = 0; // 统计猜测次数
printf("按q退出游戏\n");
for (int i=0; i<3; i++) // 猜三次
{
printf("开始%d/3论猜测:\n", i+1);
int r = rand()%10+'0'; // 产生一个0-9的随机字符
while (1)
{
char input = getch();
if (input == 'q')
{// 输入q 退出游戏
return;
}
else if (input > '9' || input < '0')
{// 输入错误
printf("输入错误,重新输入!\n");
}
else
{// 输入0-9 输入正确。
nCount++;
printf("您输入的是:%c,", input);
if (input > r)
printf("大于正确结果!\n");
else if (input < r)
printf("小于正确结果!\n");
else
{
printf("恭喜你猜对了!\n");
break; // 跳出while循环
}
}
}
}
printf("您猜了%d次!\n", nCount);
// 保存至排行榜
int num[10] = {0};
ReadList(num, 10);
InsertList(num, 10, nCount);
SaveList(num, 10);
}
// 开始游戏
void Start()
{
printf("系统产生一个0-9的数,请您对其猜测!\n");
printf("按任意键开始游戏!\n");
getch();
Game();
printf("游戏结束\n");
getch();
}
// 继续游戏
void Goon()
{
int num[10] = {0};
ReadList(num, 10);
ShowList(num, 10);
getch();
}
// 游戏设置
void Set()
{
printf("游戏设置\n");
printf("\t游戏声音\n");
printf("\t游戏画面\n");
printf("\t游戏难度\n");
getch();
printf("保存设置\n");
}
// 退出
bool Quit()
{
printf("您确定要退出程序么?\n输入y/Y确定退出程序,其他键取消退出操作!:\n");
char input = getch();
if (input == 'y' || input == 'Y')
{
printf("您退出了游戏!\n");
getch();
return true;
}
return false;
}
// 初始化
void Init()
{
srand(time(0));
}
// 开始
void Enter()
{
while (1)
{
system("cls");
MainMenu();
char input = getch(); // 在VC/VS的cpp文件里,可以把变量声明放到程序过程中
system("cls");
switch (input)
{
case '1':
{
Start();
break;
}
case '2':
{
Goon();
break;
}
case '3':
{
Set();
break;
}
case '4':
{
if (Quit())
return;
else
break;
}
default:
{
printf("\a");
break;
}
}
}
}
void main()
{
Init();
Enter();
}[local]1[/local] // ???
最后一句多了个[local]1[/local]