📄 grary2.h
字号:
#ifndef __GRARY2_H
#define __GRARY2_H
#if !defined( __TOOLS_H )
#include "tools.h"
#endif
const int mnum=2000;
const int maxrow=30;
const int minrow=0;
const int maxcol=30;
const int mincol=0;
#ifndef ddarr
#define ddarr
class Vararray
{private:
int *element;
int size;
int min;
int max;
public:
Vararray( int m=0,int s=0);
Vararray();
int& operator [](const int index);
~Vararray(){ delete []element; }
};
Vararray::Vararray(int m,int s)
{
size=s-m+1;
max=s;
min=m;
element=new int[size];
for(int i=0;i<size;i++)
element[i]=0;
}
int & Vararray::operator[](const int index)
{ return element[index-min];
}
class BB2
{
public:
unsigned int numberofrow;
unsigned int numberofcol;
unsigned int rowstart;
unsigned int colstart;
Vararray array;
BB2(unsigned int,unsigned int,unsigned int,unsigned int);
int& select(unsigned int,unsigned int);
class Row
{
public:
BB2& array2D;
unsigned int const row;
Row(BB2& _array2D,unsigned int _row):
array2D(_array2D),row(_row){}
int& operator[](unsigned int column)const
{return array2D.select (row,column);}
};
Row operator[](unsigned int);
};
BB2::BB2(unsigned int m=0,unsigned int n=30,
unsigned int k=0,unsigned l=30):
numberofrow(n-m+1),
numberofcol(l-k+1),
rowstart(m),
colstart(k),
array(0,(n-m+1)*(l-k+1) ){}
int& BB2::select(unsigned int i,unsigned int j)
{
if(i>=rowstart+numberofrow||i<rowstart)
{
Error("invalid row");
exit(0);
}
if(j>=colstart+numberofcol||j<colstart)
{
Error("invalid column");
exit(0);
}
return array[(i-rowstart)*numberofcol+j-colstart+1];
}
BB2::Row BB2::operator[](unsigned int row)
{return Row(*this,row);
}
#endif
typedef int datatype;
class GrpArr2
{public:
int * ag2;
int sseg,oops;
boolean dsb;
string name;
int sx,sy,h,w,srow,erow,scol,ecol;
int arow1,acol1,arow2,acol2;
ffield datafd;
boolean havefd;
int size;
GrpArr2(){datafd=nil;}
~GrpArr2(){if(datafd!=nil)farfree(datafd);}
} ;
void set_trace2_mode(int delaytime);
void trace2();
void trace2_off();
int elmn2high( GrpArr2& ag);
int elmn2width(GrpArr2& ag);
int sx2(GrpArr2& ag);
int sy2(GrpArr2& ag);
int row1(GrpArr2& ag);
int row2(GrpArr2& ag);
int col1(GrpArr2& ag);
int col2(GrpArr2& ag);
void set_elmn2_size(GrpArr2& ag,int hh,int ww);
void set_grparr2_to(GrpArr2& ag,int x,int y);
void coord2(GrpArr2& ag,int i,int j,int& x,int& y);
void fifild2(GrpArr2& ag,int i,int j,int orxor);
datatype elmn2(GrpArr2& ag,int i,int j);
void disnodedat2(GrpArr2& ag,int i,int j);
void dissub2(GrpArr2& ag);
void create_grp_arrbb2(GrpArr2& ag,BB2& b,
string title,int i1,int i2,int j1,int j2);
void ret_grp_arrbb2(GrpArr2& ag,BB2& b);
void put_elmn2(GrpArr2& ag,int i,int j,datatype v);
void move_elmn2(GrpArr2& ag,int i1,int j1,int i2,int j2);
void xchg_elmn2(GrpArr2& ag,int i1,int j1,int i2,int j2);
boolean cmp_elmn2(GrpArr2& ag,int i1,int j1,int i2,int j2,string op);
void initial_arr12(GrpArr2& ag);
void initial_GrpArr2(GrpArr2& ag);
void cur_cover2(GrpArr2& ag,int i,int j,int orxor);
void cur_elmn2_onoff(GrpArr2& ag,int i,int j);
void reset_GrpArr2_elmn2(GrpArr2& ag,int i,int j);
void reset_GrpArr2(GrpArr2& ag);
void clear_GrpArr2_elmn2(GrpArr2& ag,int i,int j);
void clear_GrpArr2(GrpArr2& ag);
void display_GrpArr2_frame(GrpArr2& ag);
void display_GrpArr2_sub2(GrpArr2& ag);
void display_GrpArr2_elmns(GrpArr2& ag);
void display_GrpArr2_elmn2(GrpArr2& ag,int i,int j);
void display_GrpArr2(GrpArr2& ag);
void disp_arrbb2(BB2& b,int i1,int i2,int j1,int j2);
void move_GrpArr2_to(GrpArr2& ag,int x,int y);
void move_GrpArr2_dxy(GrpArr2& ag,int x,int y);
void move_GrpArr2_Mid(GrpArr2& ag,int x,int y);
void set_GrpArr2_range(GrpArr2& ag);
void load_arrbb2_file(BB2& a,int i1,int i2,int j1,int j2,string dosfile);
void load_arrbb2(BB2& a,int i1,int i2,int j1,int j2);
void save_arrbb2_file(BB2& a,int i1,int i2,int j1,int j2,string dosfile);
void save_arrbb2(BB2& a,int i1,int i2,int j1,int j2);
void modi_GrpArr2(GrpArr2& ag);
void input_GrpArr2(GrpArr2& ag);
void modi_arrbb2(BB2& b,int i1,int i2,int j1,int j2);
void Rand_GrpArr2(GrpArr2& ag,int range1,int range2);
void reset_arrbb2(BB2& b,int i1,int i2,int j1,int j2);
void input_arrbb2(BB2& b,int i1,int i2,int j1,int j2);
void rand_arrbb2(BB2& a,int i1,int i2,int j1,int j2,int range1,int range2);
int order(GrpArr2& ag,int i,int j);
int * nrelptr(int* p,int rel);
int * relptr(int * p,int rel);
int * nextptr(int * p);
int * grp_elmn2_ptr(GrpArr2& ag,int i,int j);
void GrpArr2_range(GrpArr2& ag,int& x1,int& y1,int& x2,int& y2);
void clear_GrpArr2_range(GrpArr2& ag);
//{AnyArr2}
void create_grp_AnyArr2(GrpArr2& ag,BB2& b,
string title,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2);
void reset_AnyArr2(BB2& b,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2);
void reset_AnyArr2All(BB2& b,int i01,int i02,int j01,int j02);
void load_anyarr2_file(BB2& a,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2,string dosfile);
void load_AnyArr2(BB2& a,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2);
void save_AnyArr2_file(BB2& a,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2,string dosfile);
void save_AnyArr2(BB2& a,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2);
void disp_AnyArr2(BB2& a, int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2);
void input_AnyArr2(BB2& b,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2);
void modi_AnyArr2(BB2& b,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2);
void rand_AnyArr2(BB2& b,int i01,int i02,int j01,int j02,int i1,int i2,int j1,int j2,int range1,int range2);
void load_GrpArr2_file(GrpArr2& ag,string dosfile);
void save_GrpArr2_file(GrpArr2& ag,string dosfile);
void load_GrpArr2(GrpArr2& ag);
void save_GrpArr2(GrpArr2& ag);
void move_GrpArr2(GrpArr2& ag);
void move1_GrpArr2(GrpArr2& ag);
void handle_GrpArr2_event(pmenunode& pmenu,GrpArr2& ag);
void handle_GrpArr2_menu( mymenu& GrpArr2menu1,boolean& selectorno,
pmenunode& pmenu, GrpArr2& ag);
void handle_GrpArr2(GrpArr2& ag);
void get_GrpArr2(GrpArr2& ag);
void get_grp_arrbb2(GrpArr2& ag,BB2& b);
void get_grp_AnyArr2(GrpArr2& ag,BB2& b,int i1,int i2,int j1,int j2);
void get_arrbb2(BB2& b);
void get_AnyArr2(BB2& b,int i1,int i2,int j1,int j2);
//const {test for GrpArr2}
const int ComInputGrpArr2=601;
const int ComRandGrpArr2=602;
const int ComModiGrpArr2=603;
const int ComReadGrpArr2=604;
const int ComSaveGrpArr2=605;
const int Comsetrange=606;
const int Comdisp=607;
const int Commove1=608;
const int Commove2=609;
const int ComEditRow1GrpArr2=610;
const int ComEditRow2GrpArr2=611;
const int ComEditCol1GrpArr2=612;
const int ComEditCol2GrpArr2=613;
const int ComSetHighGrpArr2=614;
const int ComSetWidthGrpArr2=615;
#ifndef constvar
#define constvar
const int startrow=30;
const int keystep=5;
const int bigstep=40;
const int sd=4;
const int d=0;
const int m=2;
const int dirnum=6;
const int mvstep=5;
const int step=30;
typedef int move[dirnum][3];
const move mv={{0,-1, up },{0,1,down},
{-1,0,left},{1,0,right},
{-4,0,bigleft},{4,0,bigright}};
#endif
int trace2_time;
void set_trace2_mode(int delaytime)
{ trace2_time=delaytime; }
void trace2_off()
{ trace2_time=0; }
void trace2()
{ if (trace2_time<0)
Waitanykey();
else
delay(trace2_time);
}
int elmn2high(GrpArr2& ag)
{ int elmn2high=ag.h;
return elmn2high; }
int elmn2width(GrpArr2& ag)
{ int elmn2width=ag.w;
return elmn2width; }
int sx2(GrpArr2& ag)
{ int sx2=ag.sx;
return sx2; }
int sy2(GrpArr2& ag)
{ int sy2=ag.sy;
return sy2; }
void set_elmn2_size(GrpArr2& ag,int hh,int ww)
{
ag.h=hh;ag.w=ww; }
void set_GrpArr2_to(GrpArr2& ag,int x,int y)
{
ag.sx=x; ag.sy=y; }
void coord2(GrpArr2& ag,int i,int j,int& x,int& y)
{
y=ag.sy+ag.h*(i-ag.srow);
x=ag.sx+ag.w*(j-ag.scol);
}
void fifild2(GrpArr2& ag,int i,int j,int orxor)
{int x,y;
coord2(ag,i,j,x,y);
putimage(x+1,y+1,ag.datafd,orxor);
}
int order( GrpArr2& ag,int i,int j)
{
int order=(i-ag.arow1)*(ag.acol2-ag.acol1+1)+j-ag.acol1+1;
return order; }
int far* nrelptr(int far * p, int rel)
{ int far * nrelptr=p+rel;
return nrelptr;
}
int far*relptr(int far*p,int rel)
{int far * relptr=nil;
relptr=p+rel;
return relptr; }
int far* nextptr(int far*p)
{int far* nextptr=nil;
nextptr=p+1;
return nextptr;
}
int far* grp_elmn2_ptr(GrpArr2& ag,int i,int j)
{ int far * grp_elmn2_ptr=relptr(ag.ag2,order(ag,i,j)-1) ;
return grp_elmn2_ptr; }
datatype elmn2(GrpArr2& ag,int i,int j) // {ag2[order(ag,i,j)]}
{ datatype elmn2=datatype(* grp_elmn2_ptr(ag,i,j));
return elmn2; }
void disnodedat2(GrpArr2& ag,int i,int j)
{int x,y;
unsigned char st[8];
fifild2(ag,i,j,0);fifild2(ag,i,j,1);coord2(ag,i,j,x,y);
Convs(elmn2(ag,i,j),st);
outtextxy(x+ag.w/4,y+ag.h/2,st);
}
void dissub2(GrpArr2& ag )
{int x,y,i;
unsigned char st[8];
for( i=ag.scol;i<=ag.ecol;i++)
{ coord2(ag,ag.srow-1,i,x,y);
x=x+ag.w/2;y=y+ag.h/2;
Convs(i,st);
outtextxy(x,y,st);
}
for(i=ag.srow;i<=ag.erow;i++)
{ coord2(ag,i,ag.scol-1,x,y);
x=x+ag.w/2;y=y+ag.h/2;
Convs(i,st);
outtextxy(x,y,st);
}
}
void create_grp_arrbb2(GrpArr2& ag,BB2& b,string title,
int i1,int i2,int j1,int j2)
{
ag.h=16;
ag.w=30; ag.name=title;
ag.ag2=&b[b.rowstart][b.colstart];
ag.havefd=false;
ag.srow=i1;
ag.erow=i2;
ag.scol=j1;
ag.ecol=j2;
ag.arow1=b.rowstart;
ag.acol1=b.colstart;
ag.arow2=b.rowstart+b.numberofrow-1;
ag.acol2=b.colstart+b.numberofcol-1;
}
int row1(GrpArr2& ag)
{ int row1=ag.srow;
return row1; }
int row2(GrpArr2& ag)
{ int row2=ag.erow;
return row2; }
int col1(GrpArr2& ag)
{ int col1=ag.scol;
return col1; }
int col2(GrpArr2& ag)
{int col2=ag.ecol;
return col2;
}
void put_elmn2(GrpArr2& ag,int i,int j,datatype v)
{ * grp_elmn2_ptr(ag, i,j)=v;
disnodedat2(ag,i,j); }
void move_elmn2(GrpArr2& ag,int i1,int j1,int i2,int j2)
{int x,y;
fifild2(ag,i1,j1,1);
getch();
fifild2(ag,i1,j1,1);
disnodedat2(ag,i2,j2);
fifild2(ag,i2,j2,1);
* grp_elmn2_ptr(ag, i2,j2)=elmn2(ag, i1,j1);
fifild2(ag,i2,j2,1);
disnodedat2(ag,i2,j2);
getch();
}
void xchg_elmn2(GrpArr2& ag,int i1,int j1,int i2,int j2)
{ int x,y;
datatype te;
fifild2(ag,i1,j1,1);fifild2(ag,i2,j2,1);getch();
disnodedat2(ag,i1,j1);disnodedat2(ag,i2,j2);
te=elmn2(ag, i2,j2);
* grp_elmn2_ptr(ag, i2,j2)=elmn2(ag, i1,j1);
* grp_elmn2_ptr(ag, i1,j1)=te;
disnodedat2(ag,i1,j1);disnodedat2(ag,i2,j2);getch();
}
boolean cmp_elmn2(GrpArr2& ag,int i1,int j1,int i2,int j2,string op)
{int x1,y1,x2,y2,x3,y3,x4,y4;
datatype v1,v2;
boolean cmp;
disnodedat2(ag,i1,j1);disnodedat2(ag,i2,j2);
fifild2(ag,i1,j1,1); fifild2(ag,i2,j2,1);getch();
disnodedat2(ag,i1,j1); disnodedat2(ag,i2,j2);
v1=elmn2(ag,i1,j1); v2=elmn2(ag,i2,j2);
cmp=boolean(!strcmp(op,"=")&&(v1==v2)||(!strcmp(op,">") && (v1>v2)));
cmp=boolean(cmp||(!strcmp(op,"<")&& (v1<v2)) ||(!strcmp(op,"!=") &&(v1!=v2)));
cmp=boolean(cmp||(!strcmp(op,"<=") &&(v1<=v2)) ||(!strcmp(op,">=")&&(v1>=v2)));
return cmp;
}
void initial_arr12(GrpArr2& ag)
{int i,may;
Into_graph();
setcolor(WHITE);
setfillpattern(fillmode,fillcolor);
if (ag.havefd==true)
farfree(ag.datafd);
ag.havefd=true;
bar(2,2,ag.w-1,ag.h-1);
ag.size=imagesize(2,2,ag.w-1,ag.h-1);
ag.datafd=farmalloc(ag.size);
getimage(2,2,ag.w-1,ag.h-1,ag.datafd);
putimage(2,2,ag.datafd,1);
}
void initial_GrpArr2(GrpArr2& ag)
{ initial_arr12(ag);
ag.sx=100;
ag.sy=100 ;
}
void cur_cover2(GrpArr2& ag,int i,int j,int orxor)
{ fifild2(ag,i,j,orxor); }
void cur_elmn2_onoff(GrpArr2& ag,int i,int j)
{ fifild2(ag,i,j,1); }
void reset_GrpArr2_elmn2(GrpArr2& ag,int i,int j)
{ put_elmn2(ag,i,j,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -