大一的C语言课程设计,用到的方法都很基础。记录部分主要是链表和文件操作,游戏部分主要是循环。用了多文件的方式去写,所有代码加起来估计有五百多行。
运行环境:
Windows10 下的 codeblocks17.12
语言:
C语言
完整代码,拿去可以直接运行
全程傻瓜式操作
换游戏直接更改游戏模块即可
本蒟蒻暂时觉得记录模块写的还可,有不足之处欢迎大佬们指正~
源文件
main.c
#include "head.h"
#include "struct.h"
stu *bigh; //永远的主链头
int AL=0; //主链节点数,即玩家总数
int check(char n[]){
int l=strlen(n);
int i;
for(i=0;i<l;i++)
if(!((n[i]<='z'&&n[i]>='a')||(n[i]>='0'&&n[i]<='9')||(n[i]<='Z'&&n[i]>='A')))
return 1;
return 0;
}
int main()
{
system("color 75");
HideCursor();
int choice=0,bo,no;
char name[30];
bigh=(stu*)malloc(sizeof(stu));
bigh->next=NULL;
readPastB();
while(1){
printf(" WELCOME TO PLANE WARS!\n\n\n");
printf(" 1.进入游戏\n");
printf(" 2.退出游戏\n\t请按2退出游戏,直接关闭窗口会无法保存本次记录!!!\n");
printf(" 3.删除个人记录\n");
printf(" 4.帮助\n\n");
printf("请输入序号进行选择:");
scanf("%d",&choice);
switch(choice){
case 1:
no=1;
while(no){
printf("\n昵称(长度小于15的无空格字母或数字):");
scanf("%s",name) ;
no=check(name);
if(no)
printf("输入格式有误,请重新输入");
}
if(createBig(name)){
AL++;
update(0,-10,createBig(name));
}
to_g2(name);
break;
case 2:
if(bigh->next==NULL)
remove("PlaneWar.txt");
else
writeBig();
exit(0);
break;
case 3:
bo=1;
while(bo){
no=1;
while(no){
printf("\n请输入昵称:");
scanf("%s",name) ;
no=check(name);
if(no)
printf("输入格式有误,请重新输入");
}
if(findSon(name)!=NULL){
printf("\n确认删除%s的所有记录?确认请按0,重新输入请按1\n",name);
scanf("%d",&bo) ;
}
else{
printf("没有%s的相关记录,重新输入请按1,取消删除操作请按2\n",name);
scanf("%d",&bo) ;
if(bo==2)
break;
}
}
if(!bo){
AL-- ;
deleteBig(name);
remove(generFname(name));
}
break;
case 4:
system("cls");
printf("游戏说明...\n\n");
printf("按回车返回");
getchar();getchar();
break;
default:
printf("输入有误,请重新输入:");
}
system("cls");
}
return 0;
}
page.c
#include "head.h"
#include "struct.h"
extern stu* bigh;
void to_g2(char *na) //进入界面2
{
int choice;
char name[30];
stu *bigs;
while(1){
system("cls");
printf(" WELCOME TO PLANE WARS!\n\n\n");
printf(" 1.开始游戏\n");
printf(" 2.个人战绩\n");
printf(" 3.榜单\n");
printf(" 4.返回\n\n");
printf