⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 realsave.cpp

📁 一个在tc3.0下面写的棋类游戏 很经典 值得好好研究
💻 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 + -