inline analyse_result check_segment(Point const& previous, Point const& current, Turn const& turn, bool from_monotonic) { typedef typename strategy::side::services::default_strategy < typename cs_tag<Point>::type >::type side_strategy; typedef typename geometry::coordinate_type<Point>::type coordinate_type; coordinate_type const twice_area = side_strategy::template side_value < coordinate_type, coordinate_type >(previous, current, turn.robust_point); if (twice_area == 0) { // Collinear, only on segment if it is covered by its bbox if (in_box(previous, current, turn.robust_point)) { return analyse_on_offsetted; } } else if (twice_area < 0) { // It is in the triangle right-of the segment where the // segment is the hypothenusa. Check if it is close // (within rounding-area) if (twice_area * twice_area < geometry::comparable_distance(previous, current) && in_box(previous, current, turn.robust_point)) { return analyse_near_offsetted; } else if (from_monotonic) { return analyse_within; } } else if (twice_area > 0 && from_monotonic) { // Left of segment return analyse_disjoint; } // Not monotonic, on left or right side: continue analysing return analyse_continue; }
int collide_box_line(const vec3_t mins, const vec3_t maxs, const vec3_t a, const vec3_t b, vec3_t hit) { /* fast checks, both ends of line on same side of 6 planes */ if (b[0] < mins[0] && a[0] < mins[0]) return 0; if (b[0] > maxs[0] && a[0] > maxs[0]) return 0; if (b[1] < mins[1] && a[1] < mins[1]) return 0; if (b[1] > maxs[1] && a[1] > maxs[1]) return 0; if (b[2] < mins[2] && a[2] < mins[2]) return 0; if (b[2] > maxs[2] && a[2] > maxs[2]) return 0; /* start inside box */ if (a[0] > mins[0] && a[0] < maxs[0] && a[1] > mins[1] && a[1] < maxs[1] && a[2] > mins[2] && a[2] < maxs[2]) { v_copy(hit, a); return 1; } if ((intersect(a[0] - mins[0], b[0] - mins[0], a, b, hit) && in_box(hit, mins, maxs, 1)) || (intersect(a[1] - mins[1], b[1] - mins[1], a, b, hit) && in_box(hit, mins, maxs, 2)) || (intersect(a[2] - mins[2], b[2] - mins[2], a, b, hit) && in_box(hit, mins, maxs, 3)) || (intersect(a[0] - maxs[0], b[0] - maxs[0], a, b, hit) && in_box(hit, mins, maxs, 1)) || (intersect(a[1] - maxs[1], b[1] - maxs[1], a, b, hit) && in_box(hit, mins, maxs, 2)) || (intersect(a[2] - maxs[2], b[2] - maxs[2], a, b, hit) && in_box(hit, mins, maxs, 3))) return 1; return 0; }
int collide_box_line(const vec3_t mins, const vec3_t maxs, const vec3_t a, const vec3_t b, vec3_t hit) { if (b[0] < mins[0] && a[0] < mins[0]) return 0; if (b[0] > maxs[0] && a[0] > maxs[0]) return 0; if (b[1] < mins[1] && a[1] < mins[1]) return 0; if (b[1] > maxs[1] && a[1] > maxs[1]) return 0; if (b[2] < mins[2] && a[2] < mins[2]) return 0; if (b[2] > maxs[2] && a[2] > maxs[2]) return 0; if (a[0] > mins[0] && a[0] < maxs[0] && a[1] > mins[1] && a[1] < maxs[1] && a[2] > mins[2] && a[2] < maxs[2]) { v_copy(hit, a); return 1; } if ((intersect(a[0] - mins[0], b[0] - mins[0], a, b, hit) && in_box(hit, mins, maxs, 1)) || (intersect(a[1] - mins[1], b[1] - mins[1], a, b, hit) && in_box(hit, mins, maxs, 2)) || (intersect(a[2] - mins[2], b[2] - mins[2], a, b, hit) && in_box(hit, mins, maxs, 3)) || (intersect(a[0] - maxs[0], b[0] - maxs[0], a, b, hit) && in_box(hit, mins, maxs, 1)) || (intersect(a[1] - maxs[1], b[1] - maxs[1], a, b, hit) && in_box(hit, mins, maxs, 2)) || (intersect(a[2] - maxs[2], b[2] - maxs[2], a, b, hit) && in_box(hit, mins, maxs, 3))) return 1; return 0; }
static char *insert_mols(const char *mol_insrt, int nmol_insrt, int ntry, int seed, t_atoms *atoms, rvec **x, real **r, int ePBC, matrix box, gmx_atomprop_t aps, real r_distance, real rshell, const output_env_t oenv) { t_pbc pbc; static char *title_insrt; t_atoms atoms_insrt; rvec *x_insrt, *x_n; real *r_insrt; int ePBC_insrt; matrix box_insrt; int i, mol, onr; real alfa, beta, gamma; rvec offset_x; int trial; set_pbc(&pbc, ePBC, box); /* read number of atoms of insert molecules */ get_stx_coordnum(mol_insrt, &atoms_insrt.nr); if (atoms_insrt.nr == 0) { gmx_fatal(FARGS, "No molecule in %s, please check your input\n", mol_insrt); } /* allocate memory for atom coordinates of insert molecules */ snew(x_insrt, atoms_insrt.nr); snew(r_insrt, atoms_insrt.nr); snew(atoms_insrt.resinfo, atoms_insrt.nr); snew(atoms_insrt.atomname, atoms_insrt.nr); snew(atoms_insrt.atom, atoms_insrt.nr); atoms_insrt.pdbinfo = NULL; snew(x_n, atoms_insrt.nr); snew(title_insrt, STRLEN); /* read residue number, residue names, atomnames, coordinates etc. */ fprintf(stderr, "Reading molecule configuration \n"); read_stx_conf(mol_insrt, title_insrt, &atoms_insrt, x_insrt, NULL, &ePBC_insrt, box_insrt); fprintf(stderr, "%s\nContaining %d atoms in %d residue\n", title_insrt, atoms_insrt.nr, atoms_insrt.nres); srenew(atoms_insrt.resinfo, atoms_insrt.nres); /* initialise van der waals arrays of insert molecules */ mk_vdw(&atoms_insrt, r_insrt, aps, r_distance); srenew(atoms->resinfo, (atoms->nres+nmol_insrt*atoms_insrt.nres)); srenew(atoms->atomname, (atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(atoms->atom, (atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(*x, (atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(*r, (atoms->nr+atoms_insrt.nr*nmol_insrt)); trial = mol = 0; while ((mol < nmol_insrt) && (trial < ntry*nmol_insrt)) { fprintf(stderr, "\rTry %d", trial++); for (i = 0; (i < atoms_insrt.nr); i++) { copy_rvec(x_insrt[i], x_n[i]); } alfa = 2*M_PI*rando( &seed); beta = 2*M_PI*rando( &seed); gamma = 2*M_PI*rando( &seed); rotate_conf(atoms_insrt.nr, x_n, NULL, alfa, beta, gamma); offset_x[XX] = box[XX][XX]*rando(&seed); offset_x[YY] = box[YY][YY]*rando(&seed); offset_x[ZZ] = box[ZZ][ZZ]*rando(&seed); gen_box(0, atoms_insrt.nr, x_n, box_insrt, offset_x, TRUE); if (!in_box(&pbc, x_n[0]) || !in_box(&pbc, x_n[atoms_insrt.nr-1])) { continue; } onr = atoms->nr; add_conf(atoms, x, NULL, r, FALSE, ePBC, box, TRUE, &atoms_insrt, x_n, NULL, r_insrt, FALSE, rshell, 0, oenv); if (atoms->nr == (atoms_insrt.nr+onr)) { mol++; fprintf(stderr, " success (now %d atoms)!", atoms->nr); } } srenew(atoms->resinfo, atoms->nres); srenew(atoms->atomname, atoms->nr); srenew(atoms->atom, atoms->nr); srenew(*x, atoms->nr); srenew(*r, atoms->nr); fprintf(stderr, "\n"); /* print number of molecules added */ fprintf(stderr, "Added %d molecules (out of %d requested) of %s\n", mol, nmol_insrt, *atoms_insrt.resinfo[0].name); return title_insrt; }
static char *insert_mols(char *mol_insrt,int nmol_insrt,int ntry,int seed, t_atoms *atoms,rvec **x,real **r,int ePBC,matrix box, gmx_atomprop_t aps,real r_distance,real rshell) { t_pbc pbc; static char *title_insrt; t_atoms atoms_insrt; rvec *x_insrt,*x_n; real *r_insrt; int ePBC_insrt; matrix box_insrt; int i,mol,onr; real alfa,beta,gamma; rvec offset_x; int try; set_pbc(&pbc,ePBC,box); /* read number of atoms of insert molecules */ get_stx_coordnum(mol_insrt,&atoms_insrt.nr); if (atoms_insrt.nr == 0) gmx_fatal(FARGS,"No molecule in %s, please check your input\n",mol_insrt); /* allocate memory for atom coordinates of insert molecules */ snew(x_insrt,atoms_insrt.nr); snew(r_insrt,atoms_insrt.nr); snew(atoms_insrt.resname,atoms_insrt.nr); snew(atoms_insrt.atomname,atoms_insrt.nr); snew(atoms_insrt.atom,atoms_insrt.nr); atoms_insrt.pdbinfo = NULL; snew(x_n,atoms_insrt.nr); snew(title_insrt,STRLEN); /* read residue number, residue names, atomnames, coordinates etc. */ fprintf(stderr,"Reading molecule configuration \n"); read_stx_conf(mol_insrt,title_insrt,&atoms_insrt,x_insrt,NULL, &ePBC_insrt,box_insrt); fprintf(stderr,"%s\nContaining %d atoms in %d residue\n", title_insrt,atoms_insrt.nr,atoms_insrt.nres); srenew(atoms_insrt.resname,atoms_insrt.nres); /* initialise van der waals arrays of insert molecules */ mk_vdw(&atoms_insrt,r_insrt,aps,r_distance); srenew(atoms->resname,(atoms->nres+nmol_insrt)); srenew(atoms->atomname,(atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(atoms->atom,(atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(*x,(atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(*r,(atoms->nr+atoms_insrt.nr*nmol_insrt)); try=mol=0; while ((mol < nmol_insrt) && (try < ntry*nmol_insrt)) { fprintf(stderr,"\rTry %d",try++); for (i=0;(i<atoms_insrt.nr);i++) { if (atoms_insrt.atom[i].resnr!=0) gmx_fatal(FARGS,"more then one residue in insert molecules\n" "program terminated\n"); copy_rvec(x_insrt[i],x_n[i]); } alfa=2*M_PI*rando(&seed); beta=2*M_PI*rando(&seed); gamma=2*M_PI*rando(&seed); rotate_conf(atoms_insrt.nr,x_n,NULL,alfa,beta,gamma); offset_x[XX]=box[XX][XX]*rando(&seed); offset_x[YY]=box[YY][YY]*rando(&seed); offset_x[ZZ]=box[ZZ][ZZ]*rando(&seed); gen_box(0,atoms_insrt.nr,x_n,box_insrt,offset_x,TRUE); if (!in_box(&pbc,x_n[0]) || !in_box(&pbc,x_n[atoms_insrt.nr-1])) continue; onr=atoms->nr; add_conf(atoms,x,NULL,r,FALSE,ePBC,box,TRUE, &atoms_insrt,x_n,NULL,r_insrt,FALSE,rshell,0); if (atoms->nr==(atoms_insrt.nr+onr)) { mol++; fprintf(stderr," success (now %d atoms)!",atoms->nr); } } srenew(atoms->resname, atoms->nres); srenew(atoms->atomname, atoms->nr); srenew(atoms->atom, atoms->nr); srenew(*x, atoms->nr); srenew(*r, atoms->nr); fprintf(stderr,"\n"); /* print number of molecules added */ fprintf(stderr,"Added %d molecules (out of %d requested) of %s\n", mol,nmol_insrt,*atoms_insrt.resname[0]); return title_insrt; } static void add_solv(char *fn,t_atoms *atoms,rvec **x,rvec **v,real **r, int ePBC,matrix box, gmx_atomprop_t aps,real r_distance,int *atoms_added, int *residues_added,real rshell,int max_sol) { int i,nmol; ivec n_box; char filename[STRLEN]; char title_solvt[STRLEN]; t_atoms *atoms_solvt; rvec *x_solvt,*v_solvt=NULL; real *r_solvt; int ePBC_solvt; matrix box_solvt; int onr,onres; strncpy(filename,libfn(fn),STRLEN); snew(atoms_solvt,1); get_stx_coordnum(filename,&(atoms_solvt->nr)); if (atoms_solvt->nr == 0) gmx_fatal(FARGS,"No solvent in %s, please check your input\n",filename); snew(x_solvt,atoms_solvt->nr); if (v) snew(v_solvt,atoms_solvt->nr); snew(r_solvt,atoms_solvt->nr); snew(atoms_solvt->resname,atoms_solvt->nr); snew(atoms_solvt->atomname,atoms_solvt->nr); snew(atoms_solvt->atom,atoms_solvt->nr); atoms_solvt->pdbinfo = NULL; fprintf(stderr,"Reading solvent configuration%s\n", v_solvt?" and velocities":""); read_stx_conf(filename,title_solvt,atoms_solvt,x_solvt,v_solvt, &ePBC_solvt,box_solvt); fprintf(stderr,"\"%s\"\n",title_solvt); fprintf(stderr,"solvent configuration contains %d atoms in %d residues\n", atoms_solvt->nr,atoms_solvt->nres); fprintf(stderr,"\n"); /* apply pbc for solvent configuration for whole molecules */ rm_res_pbc(atoms_solvt,x_solvt,box_solvt); /* initialise van der waals arrays of solvent configuration */ mk_vdw(atoms_solvt,r_solvt,aps,r_distance); /* calculate the box multiplication factors n_box[0...DIM] */ nmol=1; for (i=0; (i < DIM);i++) { n_box[i] = 1; while (n_box[i]*box_solvt[i][i] < box[i][i]) n_box[i]++; nmol*=n_box[i]; } fprintf(stderr,"Will generate new solvent configuration of %dx%dx%d boxes\n", n_box[XX],n_box[YY],n_box[ZZ]); /* realloc atoms_solvt for the new solvent configuration */ srenew(atoms_solvt->resname,atoms_solvt->nres*nmol); srenew(atoms_solvt->atomname,atoms_solvt->nr*nmol); srenew(atoms_solvt->atom,atoms_solvt->nr*nmol); srenew(x_solvt,atoms_solvt->nr*nmol); if (v_solvt) srenew(v_solvt,atoms_solvt->nr*nmol); srenew(r_solvt,atoms_solvt->nr*nmol); /* generate a new solvent configuration */ genconf(atoms_solvt,x_solvt,v_solvt,r_solvt,box_solvt,n_box); #ifdef DEBUG print_stat(x_solvt,atoms_solvt->nr,box_solvt); #endif #ifdef DEBUG print_stat(x_solvt,atoms_solvt->nr,box_solvt); #endif /* Sort the solvent mixture, not the protein... */ sort_molecule(&atoms_solvt,x_solvt,v_solvt,r_solvt); /* add the two configurations */ onr=atoms->nr; onres=atoms->nres; add_conf(atoms,x,v,r,TRUE,ePBC,box,FALSE, atoms_solvt,x_solvt,v_solvt,r_solvt,TRUE,rshell,max_sol); *atoms_added=atoms->nr-onr; *residues_added=atoms->nres-onres; sfree(x_solvt); sfree(r_solvt); fprintf(stderr,"Generated solvent containing %d atoms in %d residues\n", *atoms_added,*residues_added); }
//Closest point from c on segment ab pt closest_point_seg(pt a, pt b, pt c){ pt close = closest_point(a, b, c); if(in_box(a, b, close)) return close; return dist(a, c) < dist(b, c) ? a : b; }
void main() { clrscr(); char pwd[]="bigmanani"; char ans[20]; cout<<"Enter password : "******"*"; } else break; } if(strcmp(ans,pwd)) { cout<<"\nIncorrect password."; getch(); exit(0); } int op; clrscr(); fout<<"main\n"; ifstream fin("sdk.txt"); // cout<<"Enter the puzzle row-wise (Use 0's for empty spaces) :\n"; for(int i=0;i<=8;++i) for(int j=0;j<=8;++j) { fin>>space[i][j].value; if(space[i][j].value==0) { for(int k=1;k<=9;++k) space[i][j].poss[k]=1; } else { for(int k=1;k<=9;++k) { if(k!=space[i][j].value) space[i][j].poss[k]=0; else space[i][j].poss[k]=1; } } } cout<<"Puzzle accepted. Starting Evaluation.\n"; //getch(); for(int e=1;;++e) { fout<<"Starting Evaluation "<<e<<"\n"; // getch(); for(i=0;i<=8;++i) { for(j=0;j<=8;++j) { int nop=0; cell_one_pos(i,j); int the_poss_val=0; cout<<"Evaluating space "<<i<<" "<<j<<"\n"; //getch(); if(space[i][j].value!=0) // already filled { cout<<"space "<<i<<" "<<j<<" is already filled.\n";//getch(); continue; } else cout<<"space "<<i<<" "<<j<<" is empty\n";//getch(); for(int k=1;k<=9;++k) { cout<<"Trying value "<<k<<"\n"; //getch (); if(!in_col(j,k)&&!in_row(i,k)&&!in_box(i,j,k)) // check conds { nop++; cout<<k<<" is a possible value.\n"; //getch(); space[i][j].poss[k]=1; the_poss_val=k; } else if(in_col(j,k)||in_row(i,k)||in_box(i,j,k)) { space[i][j].poss[k]=0; cout<<k<<" is not a possible value\n"; // getch(); } } if(nop==1) { space[i][j].value=the_poss_val; cout<<i<<" "<<j<<" ="<<the_poss_val<<"\n";// getch(); boxes_filled++; for(int d=1;d<=9;d++) { if(d!=the_poss_val) space[i][j].poss[d]=0; } } } } elim(0,0);elim(0,3);elim(0,6); elim(3,0);elim(3,3);elim(3,6); elim(6,0);elim(6,3);elim(6,6); rem_lin_pos(1133);rem_lin_pos(4769); rem_lin_pos(1436);rem_lin_pos(7193); rem_lin_pos(1739);rem_lin_pos(7496); rem_lin_pos(4163);rem_lin_pos(7799); rem_lin_pos(4466); cout<<"\nEvaluation "<<e<<" finished. A total of "<<boxes_filled<<" spaces have now been filled.\n"; Menu : cout<<"\n1.View the puzzle solved this far.\n"; cout<<"2.Continue Evaluation.\n"; cout<<"3.View the possibilities of a space. [row col]\n"; cout<<"4.Exit Program.\n"; cout<<"6.Elimination\n"; cout<<"7.Set Value. [row col val]\n"; cout<<"Choose an Option : "; cin>>op; if(op==1) { for(i=0;i<=8;++i) { for(j=0;j<=8;++j) { //if(space[i][j].value!=0) cout<<" "<<space[i][j].value; /* else { cout<<" {"; for(int g=1;g<=9;++g) { if(space[i][j].poss[g]) cout<<g; } cout<<"}"; } */ } cout<<"\n"; } } if(op==2) { unfilled(); continue; } if(op==3) { int i,j; cin>>i>>j; cout<<"Possibilities are : "; for(int k=1;k<=9;++k) { if(space[i][j].poss[k]==1) cout<<k<<" "; } } if(op==4) exit(0); if(op==5) { cout<<"Enter BIN : "; int bin; cin>>bin; double_down(bin); }
static char *insert_mols(const char *mol_insrt, int nmol_insrt, int ntry, int seed, t_atoms *atoms, rvec **x, real **r, int ePBC, matrix box, gmx_atomprop_t aps, real r_distance, real r_scale, real rshell, const output_env_t oenv, const char* posfn, const rvec deltaR, int enum_rot, gmx_bool bCheckAllPairDist) { t_pbc pbc; static char *title_insrt; t_atoms atoms_insrt; rvec *x_insrt, *x_n; real *r_insrt; int ePBC_insrt; matrix box_insrt; int i, mol, onr, ncol; real alfa = 0., beta = 0., gamma = 0.; rvec offset_x; int trial; double **rpos; set_pbc(&pbc, ePBC, box); /* read number of atoms of insert molecules */ get_stx_coordnum(mol_insrt, &atoms_insrt.nr); if (atoms_insrt.nr == 0) { gmx_fatal(FARGS, "No molecule in %s, please check your input\n", mol_insrt); } /* allocate memory for atom coordinates of insert molecules */ snew(x_insrt, atoms_insrt.nr); snew(r_insrt, atoms_insrt.nr); snew(atoms_insrt.resinfo, atoms_insrt.nr); snew(atoms_insrt.atomname, atoms_insrt.nr); snew(atoms_insrt.atom, atoms_insrt.nr); atoms_insrt.pdbinfo = NULL; snew(x_n, atoms_insrt.nr); snew(title_insrt, STRLEN); /* read residue number, residue names, atomnames, coordinates etc. */ fprintf(stderr, "Reading molecule configuration \n"); read_stx_conf(mol_insrt, title_insrt, &atoms_insrt, x_insrt, NULL, &ePBC_insrt, box_insrt); fprintf(stderr, "%s\nContaining %d atoms in %d residue\n", title_insrt, atoms_insrt.nr, atoms_insrt.nres); srenew(atoms_insrt.resinfo, atoms_insrt.nres); /* initialise van der waals arrays of insert molecules */ mk_vdw(&atoms_insrt, r_insrt, aps, r_distance, r_scale); /* With -ip, take nmol_insrt from file posfn */ if (posfn != NULL) { nmol_insrt = read_xvg(posfn, &rpos, &ncol); if (ncol != 3) { gmx_fatal(FARGS, "Expected 3 columns (x/y/z coordinates) in file %s\n", ncol, posfn); } fprintf(stderr, "Read %d positions from file %s\n\n", nmol_insrt, posfn); } srenew(atoms->resinfo, (atoms->nres+nmol_insrt*atoms_insrt.nres)); srenew(atoms->atomname, (atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(atoms->atom, (atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(*x, (atoms->nr+atoms_insrt.nr*nmol_insrt)); srenew(*r, (atoms->nr+atoms_insrt.nr*nmol_insrt)); trial = mol = 0; while ((mol < nmol_insrt) && (trial < ntry*nmol_insrt)) { fprintf(stderr, "\rTry %d", trial++); for (i = 0; (i < atoms_insrt.nr); i++) { copy_rvec(x_insrt[i], x_n[i]); } switch (enum_rot) { case en_rotXYZ: alfa = 2*M_PI *rando(&seed); beta = 2*M_PI *rando(&seed); gamma = 2*M_PI *rando(&seed); break; case en_rotZ: alfa = beta = 0.; gamma = 2*M_PI*rando(&seed); break; case en_rotNone: alfa = beta = gamma = 0.; break; } if (enum_rot == en_rotXYZ || (enum_rot == en_rotZ)) { rotate_conf(atoms_insrt.nr, x_n, NULL, alfa, beta, gamma); } if (posfn == NULL) { /* insert at random positions */ offset_x[XX] = box[XX][XX]*rando(&seed); offset_x[YY] = box[YY][YY]*rando(&seed); offset_x[ZZ] = box[ZZ][ZZ]*rando(&seed); gen_box(0, atoms_insrt.nr, x_n, box_insrt, offset_x, TRUE); if (!in_box(&pbc, x_n[0]) || !in_box(&pbc, x_n[atoms_insrt.nr-1])) { continue; } } else { /* Insert at positions taken from option -ip file */ offset_x[XX] = rpos[XX][mol] + deltaR[XX]*(2*rando(&seed)-1); offset_x[YY] = rpos[YY][mol] + deltaR[YY]*(2*rando(&seed)-1); offset_x[ZZ] = rpos[ZZ][mol] + deltaR[ZZ]*(2*rando(&seed)-1); for (i = 0; i < atoms_insrt.nr; i++) { rvec_inc(x_n[i], offset_x); } } onr = atoms->nr; /* This is a (maybe) slow workaround to avoid too many calls of add_conf, which * leaks memory (status May 2012). If the momory leaks in add_conf() are fixed, * this check could be removed. Note, however, that allPairsDistOk is probably * even faster than add_conf() when inserting a small molecule into a moderately * small system. */ if (bCheckAllPairDist && !allPairsDistOk(atoms, *x, *r, ePBC, box, &atoms_insrt, x_n, r_insrt)) { continue; } add_conf(atoms, x, NULL, r, FALSE, ePBC, box, TRUE, &atoms_insrt, x_n, NULL, r_insrt, FALSE, rshell, 0, oenv); if (atoms->nr == (atoms_insrt.nr+onr)) { mol++; fprintf(stderr, " success (now %d atoms)!\n", atoms->nr); } } srenew(atoms->resinfo, atoms->nres); srenew(atoms->atomname, atoms->nr); srenew(atoms->atom, atoms->nr); srenew(*x, atoms->nr); srenew(*r, atoms->nr); fprintf(stderr, "\n"); /* print number of molecules added */ fprintf(stderr, "Added %d molecules (out of %d requested) of %s\n", mol, nmol_insrt, *atoms_insrt.resinfo[0].name); return title_insrt; }
void main() { int a; int x,y; in_box(); c_block_n=8; randomize(); num=random(7); while(1) { del_line(); if(c_block_n==8) { c_block_n=num; num=random(7); for(x=0; x<5; x++) { for(y=0; y<5; y++) { c_block[x][y]=block[c_block_n][x][y]; } } x_b=6/2; y_b=0; if(!clash()) { gotoxy(27,10); printf("GAME OVER"); gotoxy(23,11); printf("press ESC to exit"); gotoxy(22,12); printf("press 1 to new game"); while(1) { a=getch(); if(a==49) { system("cls"); gotoxy(25,10); printf("NEW GAME LOADING"); gotoxy(23,12); printf("press KEY to new game"); getch(); system("cls"); in_box(); break; } else if(a==27) { exit(1); } else { continue; } } } } Time++; out_box(); if(Time>=stage[score/50]) { down(); Time=0; continue; } if(kbhit()) { key(); } } }???耀?呻??耀b??潤???耀x??????耀????耀??祝???耀????耀????耀??????耀???f耀????耀???耀???耀????向??耀????耀?吝?