📄 realsave.cpp
字号:
#include<graphics.h>
#include"ourmouse.h"
#include<alloc.h>
#include<stdio.h>
#include<time.h>
#include"bmp16.h"
#include"realsave.h"
#include<string.h>
struct savefile
{int round;
long score;
int life;
char savetime[30];}saveball[6];
int currentround,loadround;
long currentscore,loadscore;
int currentlife,loadlife;
/* enter the save and load windows ,and do what you like */
void saveoptions(int *pcuround,long *pcuscore,int *plife)
{
int savenum=6,out=1;
int sx,sy,sbutton;
struct textsettingstype textinfo;
gettextsettings(&textinfo);
currentround=(*pcuround);
currentscore=(*pcuscore);
currentlife=(*plife);
hidemouse();
savewindow();
showmouse();
do{
readmouse(&sbutton,&sx,&sy);
if(sx>=465&&sy>=300&&sx<=525&&sy<=335&&sbutton&&savenum>=0&&savenum<=5)
{
loadoption(savenum,&out);
(*pcuround)=loadround;
(*pcuscore)=loadscore;
(*plife)=loadlife;
}
else if(sx>=465&&sy>=348&&sx<=525&&sy<=382&&sbutton&&savenum>=0&&savenum<=5)
saveoption(savenum);
else if(sx>=465&&sy>=398&&sx<=525&&sy<=433&&sbutton)
{escoption(&out);
settextstyle(textinfo.font,textinfo.horiz,textinfo.charsize);}
else
getnum(&sx,&sy,&savenum,&sbutton);}while(out==1);
}
/*-------------load------------------*/
void loadoption(int savenum,int *out)
{
hidemouse();
pushbutton(465,300,525,335);
delay(200);
newbutton(465,300,525,335);
if(saveball[savenum].round!=0)
{
load(savenum);
cleardevice();
*out=0;}
showmouse();
}
/*--------------save-----------------*/
void saveoption(int savenum)
{
int k;
void *pbuffer;
pbuffer=malloc(imagesize(100,200,380,320));
getimage(100,200,380,320,pbuffer);
hidemouse();
pushbutton(465,348,525,382);
delay(200);
newbutton(465,348,525,382);
showmouse();
if(saveball[savenum].round==0)
{save(savenum);
setfillstyle(1,15);
bar(11,11+savenum*70,359,savenum*70+59);
show_savetime(savenum,10,10);}
else
{
k=warning();
hidemouse();
if(k==1)
{ save(savenum);
putimage(100,200,pbuffer,COPY_PUT);
setfillstyle(1,15);
bar(11,11+savenum*70,359,savenum*70+59);
show_savetime(savenum,10,10);}
else
putimage(100,200,pbuffer,COPY_PUT);
}
showmouse();
free(pbuffer);
}
/*-------------quit------------------*/
void escoption(int *out)
{
hidemouse();
pushbutton(465,398,525,433);
cleardevice();
showmouse();
*out=0;
}
/*------- decide which savefile should be used----------------- */
void getnum(int *px,int *py,int *pnum,int *pbutt)
{
int x=10,y=10;
int i=0;
int oldnum=*pnum;
do{
if(*px>=x&&*py>=y+i*70&&*px<=x+350&&*py<=y+i*70+50&&*pbutt)
{ *pnum=i;
if(i!=oldnum)
{ hidemouse();
setfillstyle(1,15);
bar(x+1,y+i*70+1,x+349,y+i*70+49);
show_savetime(i,x,y);
if(oldnum>=0&&oldnum<=5)
{setfillstyle(1,0);
bar(x+1,y+oldnum*70+1,x+349,y+oldnum*70+49);
show_savetime(oldnum,x,y);}
showmouse();}
break;}
}while(i++<5);
}
/*------------------initial the save and load window ---------*/
void savewindow()
{
int i=0,x=10,y=10;
FILE *fp;
fp=fopen("savefile","rb");
hidemouse();
setfillstyle(1,BROWN);
bar(0,0,639,479);
do{
setfillstyle(1,0);
bar(x+1,y+i*70+1,x+349,y+i*70+49);
pushbutton(x,y+i*70,x+350,y+i*70+50);
fseek(fp,i*sizeof(struct savefile),0);
fread(&saveball[i],sizeof(struct savefile),1,fp);
show_savetime(i,x,y);
}while(i++<5);
fclose(fp);
newbutton(465,300,525,335);
newbutton(465,348,525,382);
newbutton(465,398,525,433);
ShowBmp16("savemenu.bmp",370,230);
showmouse();
}
/*---------------show the savetime ---------------*/
void show_savetime(int i,int x,int y)
{
if(saveball[i].round==0)
{ setcolor(BLUE);
settextstyle(7,HORIZ_DIR,4);
outtextxy(x+60,y+i*70+5,"E M P T Y!");}
else
{ setcolor(BLUE);
settextstyle(7,HORIZ_DIR,3);
outtextxy(x+10,y+i*70+10,saveball[i].savetime);}
}
/*--------------- save function ------------------*/
void save(int num)
{
FILE *fp;
fp=fopen("savefile","rb+");
gettime(num);
saveball[num].round=currentround;
saveball[num].score=currentscore;
saveball[num].life=currentlife;
fseek(fp,num*sizeof(struct savefile),0);
fwrite(&saveball[num],sizeof(struct savefile),1,fp);
show_savetime(num,10,10);
fclose(fp);
}
/*--------------- load function------------------ */
void load(int num)
{
FILE *fp;
fp=fopen("savefile","rb");
fseek(fp,num*sizeof(struct savefile),0);
fread(&saveball[num],sizeof(struct savefile),1,fp);
loadround=saveball[num].round;
loadscore=saveball[num].score;
loadlife=saveball[num].life;
fclose(fp);
}
void gettime(int num)
{
time_t t;
t = time(NULL);
stime(&t);
strcpy(saveball[num].savetime,ctime(&t));
}
int warning()
{int x,y,buttons;
warningwin();
do{
readmouse(&buttons,&x,&y);
if(x>180&&y>280&&x<235&&y<300&&buttons)
{pushbutton(180,280,235,300);
delay(200);
return(1);}
else if(x>260&&y>280&&x<315&&y<300&&buttons)
{ pushbutton(260,280,315,300);
delay(200);
return(0);}
else if(x>365&&y>202&&x<378&&y<216&&buttons)
{ pushbutton(365,202,378,216);
delay(200);
return(0);}
}while(1);
}
void warningwin()
{
printf("\7");
setfillstyle(1,7);
bar(100,200,380,320);
ShowBmp16("warn.bmp",100,200);
newbutton(100,200,380,320);
newbutton(180,280,235,300);
newbutton(260,280,315,300);
setcolor(0);
newbutton(365,202,378,216);
bar(366,203,377,215);
setlinestyle(0,0,3);
line(366,204,376,214);
line(366,214,376,204);
setlinestyle(0,0,1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -