嗯,这是终结版,虽然还有一些地方不完善,但我感觉也没必要完善。只是纠结于AI的自动寻物还是有问题,桑心。GCC编译命令 gcc -Wall -D_REENTRANT  -o "%e" "%f" -lncurses -lpthread 

snakeGame.c

  1 #include "snakeAI.c"
  2 #define CTRL_TIMES 1000 // AI每秒显示的最大步数
  3 #define WINDOW_W 40
  4 #define WINDOW_H 10
  5 int threadtype=-1,threadbool=0;
  6 void *threadctrl(void *arg)
  7 {
  8     noecho();
  9     while(1)
 10     {
 11         if(threadbool)
 12         {
 13             switch(getch())
 14             {
 15                 case 'a':
 16                     threadtype=0;
 17                     break;
 18                 case 'd':
 19                     threadtype=1;
 20                     break;
 21                 case 'w':
 22                     threadtype=2;
 23                     break;
 24                 case 's':
 25                     threadtype=3;
 26                     break;
 27                 case 'q':
 28                     threadbool=0;
 29                     threadtype=4;
 30                     break;
 31                 default:
 32                     break;
 33             }
 34         }
 35     }
 36 }
 37 
 38 
 39 int main()
 40 {
 41     srand((int)time(0));
 42     initscr();
 43     int exitbool = 0;
 44     //create_queue(100);
 45     /*检查屏幕是否支持彩色功能*/
 46     if(has_colors())
 47     {
 48         start_color();
 49         init_pair(10,COLOR_BLACK,COLOR_WHITE);//菜单背景
 50         init_pair(11,COLOR_WHITE,COLOR_BLACK);//菜单选中文字
 51         init_pair(12,COLOR_WHITE,COLOR_BLACK);//弹出菜单
 52         init_pair(20,COLOR_YELLOW,COLOR_BLACK);//食物
 53         init_pair(30,COLOR_GREEN,COLOR_BLACK);//蛇通常
 54         init_pair(31,COLOR_CYAN,COLOR_BLACK);//蛇变色
 55         init_pair(40,COLOR_RED,COLOR_BLACK);//游戏碰撞
 56         init_pair(41,COLOR_BLACK,COLOR_BLACK);//游戏背景
 57         init_pair(50,COLOR_WHITE,COLOR_RED);//程序出错
 58     }
 59     
 60     /*用户控制线程*/
 61     pthread_t a_thread;
 62     pthread_create(&a_thread,NULL,threadctrl,(void *)0);
 63     charModel cmTEMP[SCR_WIDTH*SCR_HEIGHT];
 64     ctrlModel snakeModel[SCR_WIDTH*SCR_HEIGHT];
 65     ctrlModel foodModel[FOOD_AMOUNT_MAX];
 66     /*菜单选项*/
 67     while(1)
 68     {
 69         threadbool = 0;//键盘控制游戏-禁止
 70         int i = 0,usrctrl[2] = {0,0};
 71         while(1)
 72         {
 73             attrset(COLOR_PAIR(10));
 74             for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)
 75             {
 76                 if( i%SCR_WIDTH == 0|| i%SCR_WIDTH == SCR_WIDTH-1)
 77                 {
 78                     cmTEMP[i].chartype='|';
 79                 }
 80                 else if(i/SCR_WIDTH == 0 ||  i/SCR_WIDTH == SCR_HEIGHT-1)
 81                 {
 82                     cmTEMP[i].chartype='-';
 83                 }
 84                 else
 85                 {
 86                     cmTEMP[i].type=air;
 87                     cmTEMP[i].chartype=i%26+65;
 88                 }
 89             }
 90             for(i=0;i<WINDOW_W*WINDOW_H;i++)
 91             {
 92                 int sum;
 93                 sum=(i/WINDOW_W+(SCR_HEIGHT-WINDOW_H)/2)*SCR_WIDTH+(i%WINDOW_W+(SCR_WIDTH-WINDOW_W)/2);
 94                 if(i%WINDOW_W == 0|| i%WINDOW_W == WINDOW_W-1 || i/WINDOW_W == 0 || i/WINDOW_W == WINDOW_H-1)
 95                 {
 96                     cmTEMP[sum].chartype='.';
 97                 }
 98                 else
 99                 {
100                     cmTEMP[sum].chartype='=';
101                 }
102             }
103             attrset(COLOR_PAIR(10));
104             writeLineQ (cmTEMP,0);
105             move((SCR_HEIGHT-WINDOW_H)/2+1,(SCR_WIDTH-WINDOW_W)/2+1);
106             printw("                SnakeGame             ");
107             move((SCR_HEIGHT-WINDOW_H)/2+2,(SCR_WIDTH-WINDOW_W)/2+1);
108             printw("             Start SnakeGame          ");
109             move((SCR_HEIGHT-WINDOW_H)/2+3,(SCR_WIDTH-WINDOW_W)/2+1);
110             printw("              Watch snakeAI           ");
111             move((SCR_HEIGHT-WINDOW_H)/2+4,(SCR_WIDTH-WINDOW_W)/2+1);
112             printw("                 About                ");
113             move((SCR_HEIGHT-WINDOW_H)/2+5,(SCR_WIDTH-WINDOW_W)/2+1);
114             printw("                 EXIT                 ");
115             move((SCR_HEIGHT-WINDOW_H)/2+7,(SCR_WIDTH-WINDOW_W)/2+1);
116             printw("   Ctrl UP:W  DOWN:S  Enter:D Quit:Q  ");
117             move((SCR_HEIGHT-WINDOW_H)/2+2,(SCR_WIDTH-WINDOW_W)/2+40);
118             attrset(COLOR_PAIR(11));
119             switch(usrctrl[0])
120             {
121                 case 1:
122                     move((SCR_HEIGHT-WINDOW_H)/2+3,(SCR_WIDTH-WINDOW_W)/2+1);
123                     printw("         >----Watch snakeAI----<      ");
124                 break;
125                 case 2:
126                     move((SCR_HEIGHT-WINDOW_H)/2+4,(SCR_WIDTH-WINDOW_W)/2+1);
127                     printw("            >----About----<           ");
128                 break;
129                 case 3:
130                     move((SCR_HEIGHT-WINDOW_H)/2+5,(SCR_WIDTH-WINDOW_W)/2+1);
131                     printw("            >----EXIT----<            ");
132                 break;
133                 default:
134                     move((SCR_HEIGHT-WINDOW_H)/2+2,(SCR_WIDTH-WINDOW_W)/2+1);
135                     printw("        >----Start SnakeGame----<     ");
136                     break;
137             }
138             refresh();
139             noecho();
140             switch(getch())
141             {
142                 case 'w':
143                     if(usrctrl[0]==0)
144                     {
145                         usrctrl[0]=3;
146                     }
147                     else
148                     {
149                         usrctrl[0]-=1;
150                     }
151                     break;
152                 case 's':
153                     if(usrctrl[0]==3)
154                     {
155                         usrctrl[0]=0;
156                     }
157                     else
158                     {
159                         usrctrl[0]+=1;
160                     }
161                     break;
162                 case 'd':
163                     if(usrctrl[0]==3)
164                     {
165                         clear();
166                         exit(1);
167                     }
168                     else if(usrctrl[0]==1)
169                     {
170                         usrctrl[1]=1;
171                         snakeModel[0].type=right;
172                     }
173                     else if(usrctrl[0]==2)
174                     {
175                         /*about*/
176                     }
177                     else
178                     {
179                         usrctrl[1]=2;
180                         snakeModel[0].type=stop;
181                     }
182                     break;    
183             }
184             if(usrctrl[1]==1||usrctrl[1]==2)
185             {
186                 break;
187             }
188         }
189             
190         /*游戏初始化*/
191         for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)//初始化蛇模型
192         {
193             if(i<SNAKE_LENGTH)
194             {
195                 snakeModel[i].x= (SCR_WIDTH+SNAKE_LENGTH)/2-i;
196                 snakeModel[i].y= SCR_HEIGHT/2-1;
197                 if(i!=0)
198                 {
199                     snakeModel[i].type=stop;
200                 }
201             }
202             else
203             {
204                 snakeModel[i].type=null;
205             }    
206         }
207         for(i=0;i<FOOD_AMOUNT_MAX;i++)//初始化食物
208         {
209             foodModel[i].type=null;
210         }
211         addfood(snakeModel,foodModel,FOOD_AMOUNT_MAX);
212         threadbool=1;//允许键盘控制
213         
214         /*游戏主循环*/
215         while(1)
216         {
217             int bctrlsnake=0;    //变色模式控制
218             for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)
219             {
220                 if( i%SCR_WIDTH == 0|| i%SCR_WIDTH == SCR_WIDTH-1)
221                 {
222                     cmTEMP[i].type =wall;
223                     cmTEMP[i].chartype='|';
224                 }
225                 else if(i/SCR_WIDTH == 0 ||  i/SCR_WIDTH == SCR_HEIGHT-1)
226                 {
227                     cmTEMP[i].type =wall;
228                     cmTEMP[i].chartype='-';
229                 }
230                 else
231                 {
232                     cmTEMP[i].type=air;
233                     cmTEMP[i].chartype=' ';
234                 }
235             }
236             removSnake(snakeModel);    //移动蛇
237             /*添加食物图形*/
238             for(i=0;i<FOOD_AMOUNT_MAX;i++) 
239             {
240                 if(foodModel[i].type==null)
241                     continue;
242                 int sum;
243                 sum=foodModel[i].x+foodModel[i].y*SCR_WIDTH;
244                 cmTEMP[sum].type = food;
245                 cmTEMP[sum].chartype=FOOD_CHAR;
246             }
247             /*碰撞处理*/
248             int retdeal=collidedeal(cmTEMP,snakeModel);
249             if(retdeal==1)
250             {
251                 addsnakemod(snakeModel,1);
252                 for(i=0;i<FOOD_AMOUNT_MAX;i++)
253                 {
254                     if(foodModel[i].x==snakeModel[0].x && foodModel[i].y==snakeModel[0].y)
255                     {
256                         foodModel[i].type=null;
257                     }
258                 }
259                 addfood(snakeModel,foodModel,FOOD_AMOUNT_MAX);
260                 bctrlsnake=1;    //变色
261             }
262             else if(retdeal==2)
263             {
264                 for(i=0;i<5;i++)
265                 {
266                     move(SCR_HEIGHT/2-1,SCR_WIDTH/2-5);
267                     attrset(COLOR_PAIR(40));
268                     printw("GAME OVER! %d...",5-i);
269                     refresh();
270                     sleep(1);
271                 }
272                 for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)
273                 {
274                     if(i<SNAKE_LENGTH)
275                     {
276                         snakeModel[i].x= (SCR_WIDTH+SNAKE_LENGTH)/2-i;
277                         snakeModel[i].y= SCR_HEIGHT/2-1;
278                         snakeModel[i].type=stop;
279                     }
280                     else
281                     {
282                         snakeModel[i].type=null;
283                     }    
284                 }
285                 for(i=0;i<FOOD_AMOUNT_MAX;i++)
286                 {
287                     foodModel[i].type=null;
288                 }
289                 addfood(snakeModel,foodModel,FOOD_AMOUNT_MAX);
290                 if(usrctrl[1]==1)
291                 {
292                     snakeModel[0].type=right;
293                 }
294                 else
295                 {
296                     snakeModel[0].type=stop;
297                 }
298                 continue;
299             }
300             else if(retdeal==-1)
301             {
302                 program_error("Collidedeal type NULL");
303             }
304             /*关卡等级及游戏速度控制 并未实现*/
305             for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++) //添加蛇模型
306             {
307                 if(snakeModel[i].type==null)
308                 {
309                     break;
310                 }
311                 int sum;
312                 sum=snakeModel[i].x+snakeModel[i].y*SCR_WIDTH;
313                 cmTEMP[sum].type = wall;
314                 cmTEMP[sum].chartype=SNAKE_CHAR;
315                 if(i==0)
316                 {
317                     switch(snakeModel[0].type)
318                     {
319                         case left:
320                             cmTEMP[sum].chartype='<';
321                             break;
322                         case right:
323                             cmTEMP[sum].chartype='>';
324                             break;
325                         case up:
326                             cmTEMP[sum].chartype='^';
327                             break;
328                         case down:
329                             cmTEMP[sum].chartype='+';
330                             break;
331                         case stop:
332                             cmTEMP[sum].chartype='@';
333                             break;
334                         case null:
335                             program_error("SnakeModel[0] type NULL");
336                         default:
337                             program_error("SnakeModel[0] type =?");
338                     }
339                 }
340             }
341             /*玩家控制或者自动AI 即菜单选项1和2 */
342             if(usrctrl[1]==1)
343             {
344                 if(bctrlsnake==1)
345                 {
346                     writeLineQ (cmTEMP,5);
347                 }
348                 else
349                 {
350                     writeLineQ (cmTEMP,1);
351                 }
352                 snakeModel[0].type=EatAI(cmTEMP,snakeModel,foodModel);
353             }
354             else
355             {
356                 if(bctrlsnake==1)
357                 {
358                     writeLineQ (cmTEMP,4);
359                 }
360                 else
361                 {
362                     writeLineQ (cmTEMP,2);
363                 }
364                 switch(threadtype)
365                 {
366                         case stop:
367                         case left:
368                         case up:
369                         case down:
370                         case right:
371                             snakeModel[0].type=threadtype;
372                             break;
373                         case 4:
374                             exitbool = 1;
375                             break;
376                         default:
377                             break;
378                 }        
379             }
380             if(exitbool == 1)
381             {
382                 exitbool = 0;
383                 break;
384             }
385         }
386     }
387     endwin();
388     exit(EXIT_SUCCESS);
389 }
390 
391 void ctrltimes()
392 {
393     static int a=0;
394     a+=1;
395     if(a==CTRL_TIMES)
396     {
397         sleep(1);
398         a=0;
399     }
400 }
401 
402 void writeLineQ(charModel cmTEMP[],int bctrltime)
403 {
404     int i;
405     for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)
406     {
407         move(i/SCR_WIDTH,i%SCR_WIDTH);
408         switch(cmTEMP[i].chartype)
409         {
410             case '+':
411             case '<':
412             case '>':
413             case '^':
414             case '@':
415             case SNAKE_CHAR:
416                 if(bctrltime==4||bctrltime==5)
417                 {
418                     attrset(COLOR_PAIR(31));
419                 }
420                 else
421                 {
422                     attrset(COLOR_PAIR(30));
423                 }
424                 break;
425             case FOOD_CHAR:
426                 attrset(COLOR_PAIR(20));
427                 break;
428             case '|':
429             case '-':
430                 attrset(COLOR_PAIR(10));
431                 break;
432             case '.':
433                 attrset(COLOR_PAIR(10));
434                 break;
435             case '=':
436                 attrset(COLOR_PAIR(10));
437                 break;
438             default:
439                 attrset(COLOR_PAIR(41));
440                 break;
441                 
442         }
443         addch((cmTEMP[i]).chartype);
444     }
445     refresh();
446     switch(bctrltime)
447     {
448         case 1:
449             ctrltimes();
450             break;
451         case 2:
452         case 5:
453             sleep(1);
454             break;
455         case 0:
456         case 4:
457             break;
458         default:
459             program_error("WriteLineQ bctrltime '=?'");
460     }
461 }
462 void removSnake(ctrlModel snakeModel[])
463 {
464     int i;
465     if( snakeModel[0].type==stop)
466     {
467         return;
468     }
469     for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)
470     {
471         int nxtemp,nytemp,nttemp,xtemp,ytemp,ttemp;
472         if(snakeModel[i].type==null)
473         {
474             return;
475         }
476         nxtemp=snakeModel[i].x;
477         nytemp=snakeModel[i].y;
478         nttemp=snakeModel[i].type;
479         if(i==0)
480         {
481             xtemp=nxtemp;
482             ytemp=nytemp;
483             ttemp=nttemp;
484             switch(snakeModel[i].type)
485             {
486                 case left:
487                     snakeModel[i].x -=1;
488                     break;
489                 case right:
490                     snakeModel[i].x +=1;
491                     break;
492                 case up:
493                     snakeModel[i].y -=1;
494                     break;
495                 case down:
496                     snakeModel[i].y +=1;
497                     break;
498                 default:
499                     break;
500             }
501         }
502         else
503         {
504             snakeModel[i].x=xtemp;
505             snakeModel[i].y=ytemp;
506             snakeModel[i].type=ttemp;
507             xtemp=nxtemp;
508             ytemp=nytemp;
509             ttemp=nttemp;
510         }
511     }
512 }
513 
514 void fallremovSnake(ctrlModel snakeModel[])
515 {
516     int i,ctrls;
517     for(i=SCR_WIDTH*SCR_HEIGHT-1;i>=0;i--)
518     {
519         int nxtemp,nytemp,nttemp,xtemp,ytemp,ttemp;
520         if(snakeModel[i].type==null)
521         {
522             ctrls = 1;
523             continue;
524         }
525         nxtemp=snakeModel[i].x;
526         nytemp=snakeModel[i].y;
527         nttemp=snakeModel[i].type;
528         if(ctrls == 1)
529         {
530             xtemp=snakeModel[i].x;
531             ytemp=snakeModel[i].y;
532             ttemp=snakeModel[i].type;
533             switch(snakeModel[i].type)
534             {
535             case left:
536                 snakeModel[i].x +=1;
537                 break;
538             case right:
539                 snakeModel[i].x -=1;
540                 break;
541             case up:
542                 snakeModel[i].y +=1;
543                 break;
544             case down:
545                 snakeModel[i].y -=1;
546                 break;
547             default:
548                 break;
549             }
550             ctrls = 0 ;
551         }
552         else
553         {
554             snakeModel[i].x=xtemp;
555             snakeModel[i].y=ytemp;
556             snakeModel[i].type=ttemp;
557             xtemp=nxtemp;
558             ytemp=nytemp;
559             ttemp=nttemp;
560         }
561     }
562 }
563 
564 int collidedeal(charModel cmTEMP[],ctrlModel snakeModel[])
565 {
566     int i;
567     for(i=1;i<=SCR_WIDTH*SCR_HEIGHT;i++)
568     {
569         if(snakeModel[i].type==null)
570         {
571             break;
572         }
573         if(snakeModel[0].x==snakeModel[i].x && snakeModel[0].y==snakeModel[i].y)
574         {
575             return 2;
576         }
577     }
578     int sum;
579     sum=snakeModel[0].x+snakeModel[0].y*SCR_WIDTH;
580     switch(cmTEMP[sum].type)
581     {
582         case air:
583             return 0;
584         case food:
585             return 1;
586         case wall:
587             return 2;
588         default:
589             return -1;
590     }
591 }
592 
593 void addfood(ctrlModel snakeModel[],ctrlModel foodModel[],int amount)
594 {
595     
596     int i;
597     for(i=0;i<amount;i++)
598     {
599         if(foodModel[i].type!=null)
600         {
601             return;
602         }
603     }
604     for(i=0;i<amount;i++)
605     {
606         int x,y,randx;
607         do
608         {
609             randx=rand();
610         }while(randx>=SCR_WIDTH*SCR_HEIGHT);
611         x=randx%SCR_WIDTH;y=randx/SCR_WIDTH;
612         if(x!=0 && y!=0 && x!= SCR_WIDTH-1 && y!=SCR_HEIGHT-1)
613         {
614             int times,ctrlbool=0;
615             for(times=0;times<SCR_WIDTH*SCR_WIDTH;times++)
616             {
617                 if(snakeModel[times].type==null)
618                 {
619                     break;
620                 }
621                 else if(snakeModel[times].x==x && snakeModel[times].y==y)
622                 {
623                         ctrlbool=-1;
624                         break;
625                 }
626             }
627             if(ctrlbool==-1)
628             {
629                 i--;
630             }
631             else
632             {
633                 foodModel[i].x=x;
634                 foodModel[i].y=y;
635                 foodModel[i].type=stop;
636             }
637             
638         }
639         else
640         {
641             i--;
642         }
643     }
644 }
645 
646 void addsnakemod(ctrlModel snakeModel[],int amount)
647 {
648     int i,times;
649     for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)
650     {
651         if( snakeModel[i].type==null)
652         {
653             for(times=0;times<amount;times++)
654             {
655                 snakeModel[i+times].type=stop;
656                 switch(snakeModel[i+times-1].type)
657                 {
658                     
659                     case left:
660                         snakeModel[i+times].x=snakeModel[i+times-1].x+1;
661                         snakeModel[i+times].y=snakeModel[i+times-1].y;
662                         break;
663                     case right:
664                         snakeModel[i+times].x=snakeModel[i+times-1].x-1;
665                         snakeModel[i+times].y=snakeModel[i+times-1].y;
666                         break;
667                     case up:
668                         snakeModel[i+times].x=snakeModel[i+times-1].x;
669                         snakeModel[i+times].y=snakeModel[i+times-1].y+1;
670                         break;
671                     case down:
672                         snakeModel[i+times].x=snakeModel[i+times-1].x;
673                         snakeModel[i+times].y=snakeModel[i+times-1].y-1;
674                         break;
675                     default:
676                         break;
677                 }
678             }
679             return;
680         }    
681     }    
682 }
683 
684 void program_error(char error_string[])
685 {
686     attrset(COLOR_PAIR(50));
687     int i;
688     for(i=0;i<SCR_WIDTH*SCR_HEIGHT;i++)
689     {
690         move(i/SCR_WIDTH,i%SCR_WIDTH);
691         addch(' ');
692     }
693     move(SCR_HEIGHT/2,0);
694     printw("***  (ERROR) \"%s\"",error_string);
695     refresh();
696     sleep(5);
697     exit(0);
698 }

snakeAI.c

  1 #include "snakeHead.h"
  2 
  3 int calculate(charModel cmTEMP[],ctrlModel snakeModel[],int direction);
  4 movtype DirectionAlt(movtype type,int direction)
  5 {
  6     int irand;
  7     switch(direction)
  8     {
  9         case 1:
 10             return type;
 11         case 2:
 12             switch(type)
 13             {
 14                 case left:
 15                     return down;
 16                 case right:
 17                     return up;
 18                 case up:
 19                     return left;
 20                 case down:
 21                     return right;
 22                 default:
 23                     return stop;
 24             }
 25         case 4:
 26             switch(type)
 27             {
 28                 case left:
 29                     return up;
 30                 case right:
 31                     return down;
 32                 case up:
 33                     return right;
 34                 case down:
 35                     return left;
 36                 default:
 37                     return stop;
 38             }
 39         case 3://随即选定一个方向
 40         case 5:
 41             irand=rand();
 42             irand=irand%2;
 43             if(irand==0)
 44             {
 45                 return type;
 46             }
 47             else
 48             {
 49                 return DirectionAlt(type,direction-1);
 50             }
 51         case 6://随即选定一个方向
 52             irand=rand();
 53             irand=irand%2;
 54             if(irand==0)
 55             {
 56                 return DirectionAlt(type,2);
 57             }
 58             else
 59             {
 60                 return DirectionAlt(type,4);
 61                 }
 62         case 7://随即选定一个方向
 63             irand=rand();
 64             irand=irand%3;
 65             if(irand==0)
 66             {
 67                 return type;
 68             }
 69             else if(irand==1)
 70             {
 71                 return DirectionAlt(type,2);
 72             }
 73             else 
 74             {
 75                 return DirectionAlt(type,4);
 76             }
 77         default:
 78             return stop;
 79     }
 80 }
 81 
 82 movtype EatAI(charModel cmTEMP[],ctrlModel snakeModel[],ctrlModel foodModel[])
 83 {
 84     int ix,iy,i,foodamount[FOOD_AMOUNT_MAX],distance=SCR_WIDTH*SCR_HEIGHT,numfood[2];
 85     
 86     /*寻找头部周围的身体*/
 87     int headbar[4]={0,0,0,0};//[0]左 [1]右 [2]上 [3]下
 88     for(i=1;i<SCR_WIDTH*SCR_HEIGHT;i++)
 89     {
 90         if(snakeModel[i].type==null)
 91         {
 92             break;
 93         }
 94         else if(snakeModel[i].x==snakeModel[0].x)
 95         {
 96             if(snakeModel[i].y==snakeModel[0].y-1)
 97             {
 98                 headbar[2]=1;
 99             }
100             else if(snakeModel[i].y==snakeModel[0].y+1)
101             {
102                 headbar[3]=1;
103             }
104         }
105         else if(snakeModel[i].y==snakeModel[0].y)
106         {
107             if(snakeModel[i].x==snakeModel[0].x-1)
108             {
109                 headbar[0]=1;
110             }
111             else if(snakeModel[i].x==snakeModel[0].x+1)
112             {
113                 headbar[1]=1;
114             }
115         }
116     }
117     int direction=7; //1为向前 2为向左 4为向右 ,1+2 1+4 2+4 1+2+4 方向组合
118     
119     /*排除算法 排除墙体和身体碰撞*/
120     switch(snakeModel[0].type)
121     {
122         case left:
123             if(cmTEMP[(snakeModel[0].x-1)+snakeModel[0].y*60].type==wall || headbar[0]==1)
124             {
125                 direction-=1;
126             }
127             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y+1)*60].type==wall || headbar[3]==1)
128             {
129                 direction-=2;
130             }
131             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y-1)*60].type==wall || headbar[2]==1)
132             {
133                 direction-=4;
134             }
135             break;
136         case right:
137             if(cmTEMP[(snakeModel[0].x+1)+snakeModel[0].y*60].type==wall || headbar[1]==1)
138             {
139                 direction-=1;
140             }
141             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y-1)*60].type==wall || headbar[2]==1)
142             {
143                 direction-=2;
144             }
145             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y+1)*60].type==wall || headbar[3]==1)
146             {
147                 direction-=4;
148             }
149             break;
150         case up:
151             if(cmTEMP[snakeModel[0].x+(snakeModel[0].y-1)*60].type==wall || headbar[2]==1)
152             {
153                 direction-=1;
154             }
155             if(cmTEMP[(snakeModel[0].x-1)+snakeModel[0].y*60].type==wall || headbar[0]==1)
156             {
157                 direction-=2;
158             }
159             if(cmTEMP[(snakeModel[0].x+1)+snakeModel[0].y*60].type==wall || headbar[1]==1)
160             {
161                 direction-=4;
162             }
163             break;
164         case down:
165             if(cmTEMP[snakeModel[0].x+(snakeModel[0].y+1)*60].type==wall || headbar[3]==1)
166             {
167                 direction-=1;
168             }
169             if(cmTEMP[(snakeModel[0].x+1)+snakeModel[0].y*60].type==wall || headbar[1]==1)
170             {
171                 direction-=2;
172             }
173             if(cmTEMP[(snakeModel[0].x-1)+snakeModel[0].y*60].type==wall || headbar[0]==1)
174             {
175                 direction-=4;
176             }
177             break;
178         case stop:
179         default:
180             return stop;    
181     }
182     
183     /*走投无路,自我毁灭*/
184     if(direction==0){
185         return snakeModel[0].type;}
186         
187     /*带深度递归,检验方向可行性,防止自我封闭*/
188     if(direction!=1 && direction!=2 && direction!=4)
189     {
190          direction=calculate(cmTEMP,snakeModel,direction);
191      }
192         
193     /*自动寻物*/
194     for(i=0;i<FOOD_AMOUNT_MAX;i++)//取相对距离,并选取最小值
195     {
196         if(foodModel[i].type==null)
197         {
198             continue;
199         }
200         ix=snakeModel[0].x-foodModel[i].x;iy=snakeModel[0].y-foodModel[i].y;
201         foodamount[i]=ix*ix+iy*iy;//平面两点坐标公式 x^2+y^2
202         if(distance>foodamount[i])
203         {
204             numfood[0]=foodModel[i].x;
205             numfood[1]=foodModel[i].y;
206             distance=foodamount[i];
207         }
208     }
209     /*创建寻物方向*/
210     int fooddirection=0,subx=snakeModel[0].x-numfood[0],suby=snakeModel[0].y-numfood[1];
211     if(subx == 0)
212     {
213         if(suby < 0)
214         {
215             switch(snakeModel[0].type)
216             {
217                 case left:
218                     fooddirection+=2;
219                     break;
220                 case right:
221                     fooddirection+=4;
222                     break;
223                 case up:
224                     fooddirection+=6;
225                     break;
226                 case down:
227                     fooddirection+=1;
228                     break;    
229                 default:
230                     break;
231             }
232         }
233         else if(suby > 0)
234         {
235             switch(snakeModel[0].type)
236             {
237                 case left:
238                     fooddirection+=4;
239                     break;
240                 case right:
241                     fooddirection+=2;
242                     break;
243                 case up:
244                     fooddirection+=1;
245                     break;
246                 case down:
247                     fooddirection+=6;
248                     break;    
249                 default:
250                     break;
251             }
252         }
253     }
254     else if(subx<0)
255     {
256         if(suby== 0)
257         {
258             switch(snakeModel[0].type)
259             {
260                 case left:
261                     fooddirection+=6;
262                     break;
263                 case right:
264                     fooddirection+=1;
265                     break;
266                 case up:
267                     fooddirection+=4;
268                     break;
269                 case down:
270                     fooddirection+=2;
271                     break;    
272                 default:
273                     break;
274             }
275         }
276         else if(suby < 0)
277         {
278             switch(snakeModel[0].type)
279             {
280                 case left:
281                     fooddirection+=2;
282                     break;
283                 case right:
284                     fooddirection+=5;
285                     break;
286                 case up:
287                     fooddirection+=4;
288                     break;
289                 case down:
290                     fooddirection+=3;
291                     break;    
292                 default:
293                     break;
294             }
295         }
296         else{
297             switch(snakeModel[0].type)
298             {
299                 case left:
300                     fooddirection+=4;
301                     break;
302                 case right:
303                     fooddirection+=3;
304                     break;
305                 case up:
306                     fooddirection+=5;
307                     break;
308                 case down:
309                     fooddirection+=2;
310                     break;    
311                 default:
312                     break;
313             }
314         }
315     }
316     else{
317         if(suby== 0)
318         {
319             switch(snakeModel[0].type)
320             {
321                 case left:
322                     fooddirection+=1;
323                     break;
324                 case right:
325                     fooddirection+=6;
326                     break;
327                 case up:
328                     fooddirection+=2;
329                     break;
330                 case down:
331                     fooddirection+=4;
332                     break;    
333                 default:
334                     break;
335             }
336         }
337         else if(suby < 0)
338         {
339             switch(snakeModel[0].type)
340             {
341                 case left:
342                     fooddirection+=3;
343                     break;
344                 case right:
345                     fooddirection+=4;
346                     break;
347                 case up:
348                     fooddirection+=2;
349                     break;
350                 case down:
351                     fooddirection+=5;
352                     break;    
353                 default:
354                     break;
355             }
356         }
357         else{
358             switch(snakeModel[0].type)
359             {
360                 case left:
361                     fooddirection+=5;
362                     break;
363                 case right:
364                     fooddirection+=2;
365                     break;
366                 case up:
367                     fooddirection+=3;
368                     break;
369                 case down:
370                     fooddirection+=4;
371                     break;    
372                 default:
373                     break;
374             }
375         }
376     }
377     switch(direction)
378     {
379         case 1:
380             return snakeModel[0].type;
381         case 2:
382         case 4:
383             return DirectionAlt(snakeModel[0].type,direction);
384         case 7://前左右
385             return DirectionAlt(snakeModel[0].type,fooddirection);
386         case 6://左右
387             if(fooddirection>=direction || fooddirection==1)
388             {
389                 return DirectionAlt(snakeModel[0].type,6);
390             }
391             else if(fooddirection==2 || fooddirection==4)
392             {
393                 return DirectionAlt(snakeModel[0].type,fooddirection);
394             }
395             else if(fooddirection==3 || fooddirection==5)
396             {
397                 return DirectionAlt(snakeModel[0].type,fooddirection-1);
398             }    
399         case 3://前左
400             if(fooddirection<=3)
401             {
402                 return DirectionAlt(snakeModel[0].type,fooddirection);
403             }
404             else if(fooddirection==5||fooddirection==6)
405             {
406                 return DirectionAlt(snakeModel[0].type,fooddirection-4);
407             }
408             else if(fooddirection==4||fooddirection==7)
409             {
410                 return DirectionAlt(snakeModel[0].type,3);
411             }
412         case 5://前右
413             if(fooddirection==5||fooddirection==7)
414             {
415                 return DirectionAlt(snakeModel[0].type,5);
416             }
417             else if(fooddirection<=3)
418             {
419                 return DirectionAlt(snakeModel[0].type,1);
420             }
421             else if(fooddirection==4||fooddirection==6)
422             {
423                 return DirectionAlt(snakeModel[0].type,4);
424             }
425         default:
426             return stop;
427     }
428 }
429 
430 /*自动寻物递归精简版本*/
431 movtype ToWhy(charModel cmTEMP[],ctrlModel snakeModel[])
432 {
433     int i;
434     int headbar[4]={0,0,0,0};
435     for(i=1;i<SCR_WIDTH*SCR_HEIGHT;i++)
436     {
437         if(snakeModel[i].type==null)
438         {
439             break;
440         }
441         else if(snakeModel[i].x==snakeModel[0].x)
442         {
443             if(snakeModel[i].y==snakeModel[0].y-1)
444             {
445                 headbar[2]=1;
446             }
447             else if(snakeModel[i].y==snakeModel[0].y+1)
448             {
449                 headbar[3]=1;
450             }
451         }
452         else if(snakeModel[i].y==snakeModel[0].y)
453         {
454             if(snakeModel[i].x==snakeModel[0].x-1)
455             {
456                 headbar[0]=1;
457             }
458             else if(snakeModel[i].x==snakeModel[0].x+1)
459             {
460                 headbar[1]=1;
461             }
462         }
463     }
464     int direction=7; //1为向前 2为向左 4为向右 ,1+2 1+4 2+4 1+2+4 方向组合
465     switch(snakeModel[0].type)
466     {
467         case left:
468             if(cmTEMP[(snakeModel[0].x-1)+snakeModel[0].y*60].type==wall || headbar[0]==1)
469             {
470                 direction-=1;
471             }
472             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y+1)*60].type==wall || headbar[3]==1)
473             {
474                 direction-=2;
475             }
476             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y-1)*60].type==wall || headbar[2]==1)
477             {
478                 direction-=4;
479             }
480             break;
481         case right:
482             if(cmTEMP[(snakeModel[0].x+1)+snakeModel[0].y*60].type==wall || headbar[1]==1)
483             {
484                 direction-=1;
485             }
486             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y-1)*60].type==wall || headbar[2]==1)
487             {
488                 direction-=2;
489             }
490             if(cmTEMP[(snakeModel[0].x)+(snakeModel[0].y+1)*60].type==wall || headbar[3]==1)
491             {
492                 direction-=4;
493             }
494             break;
495         case up:
496             if(cmTEMP[snakeModel[0].x+(snakeModel[0].y-1)*60].type==wall || headbar[2]==1)
497             {
498                 direction-=1;
499             }
500             if(cmTEMP[(snakeModel[0].x-1)+snakeModel[0].y*60].type==wall || headbar[0]==1)
501             {
502                 direction-=2;
503             }
504             if(cmTEMP[(snakeModel[0].x+1)+snakeModel[0].y*60].type==wall || headbar[1]==1)
505             {
506                 direction-=4;
507             }
508             break;
509         case down:
510             if(cmTEMP[snakeModel[0].x+(snakeModel[0].y+1)*60].type==wall || headbar[3]==1)
511             {
512                 direction-=1;
513             }
514             if(cmTEMP[(snakeModel[0].x+1)+snakeModel[0].y*60].type==wall || headbar[1]==1)
515             {
516                 direction-=2;
517             }
518             if(cmTEMP[(snakeModel[0].x-1)+snakeModel[0].y*60].type==wall || headbar[0]==1)
519             {
520                 direction-=4;
521             }
522             break;
523         case stop:
524         default:
525             return stop;    
526     }
527     return direction;
528 }
529 
530 int depthrecurrence(charModel charTEMP[],ctrlModel TEMP_snake[],int depth,int direction,int DIR[])
531 {
532     if(depth <= 0)
533     {
534         return 0;
535     }
536     int x,y,z;
537     switch(direction)
538     {
539         case 0:
540             return 1;
541         case 1:
542             TEMP_snake[0].type = DirectionAlt(TEMP_snake[0].type,1);
543             removSnake(TEMP_snake);
544             DIR[1] = depthrecurrence(charTEMP,TEMP_snake,depth-1,ToWhy(charTEMP,TEMP_snake),DIR) + DIR[1];
545             fallremovSnake(TEMP_snake);
546             return DIR[1];
547         case 2:
548             TEMP_snake[0].type=DirectionAlt(TEMP_snake[0].type,2);
549             removSnake(TEMP_snake);
550             DIR[2] = depthrecurrence(charTEMP,TEMP_snake,depth-1,ToWhy(charTEMP,TEMP_snake),DIR) + DIR[2];
551             fallremovSnake(TEMP_snake);
552             return DIR[2];
553         case 3:
554             x = depthrecurrence(charTEMP,TEMP_snake,depth-1,1,DIR);
555             y = depthrecurrence(charTEMP,TEMP_snake,depth-1,2,DIR);
556             if(x>=y){DIR[3] = x + 1;}else{DIR[3] = y + 1;}
557             return DIR[3];    
558         case 4:
559             TEMP_snake[0].type=DirectionAlt(TEMP_snake[0].type,4);
560             removSnake(TEMP_snake);
561             DIR[4] = depthrecurrence(charTEMP,TEMP_snake,depth-1,ToWhy(charTEMP,TEMP_snake),DIR) + DIR[2];
562             fallremovSnake(TEMP_snake);
563             return DIR[4];
564         case 5:
565             x = depthrecurrence(charTEMP,TEMP_snake,depth-1,1,DIR);
566             y = depthrecurrence(charTEMP,TEMP_snake,depth-1,4,DIR);
567             if(x>=y){DIR[5] = x + 1;}else{DIR[5] = y + 1;}
568             return DIR[5];
569         case 6:
570             DIR[6] += 1;
571             x = depthrecurrence(charTEMP,TEMP_snake,depth-1,2,DIR);
572             y = depthrecurrence(charTEMP,TEMP_snake,depth-1,4,DIR);
573             if(x>=y){DIR[6] = x + 1;}else{DIR[6] = y + 1;}
574             return DIR[6];
575         case 7:
576             DIR[7] += 1;
577             x = depthrecurrence(charTEMP,TEMP_snake,depth-1,1,DIR);
578             y = depthrecurrence(charTEMP,TEMP_snake,depth-1,2,DIR);
579             z = depthrecurrence(charTEMP,TEMP_snake,depth-1,4,DIR);
580             if(x>=y)
581             {
582                 if(x>=z){DIR[7] = x + 1;}else{DIR[7] = z + 1;}
583             }
584             else
585             {
586                 if(y>=z){DIR[7] = y + 1;}else{DIR[7] = z + 1;}
587             }
588             return DIR[7];
589         default:
590             program_error("Direction type =?");
591             return -1;
592             
593     }
594 }
595 
596 int calculate(charModel cmTEMP[],ctrlModel snakeModel[],int direction)
597 {
598     int i,x;
599     int DIR[8]={0,0,0,0,0,0,0,0};
600     DIR[8]=direction;
601     ctrlModel TEMP_snake[SCR_WIDTH*SCR_HEIGHT];
602     for(i = 0; i<SCR_WIDTH*SCR_HEIGHT; i++)
603     {
604         if(snakeModel[i].type == null)
605         {
606             break;
607         }
608         TEMP_snake[i]=snakeModel[i];
609     }
610     depthrecurrence(cmTEMP,TEMP_snake,SNAKEAI_DEPTH,direction,DIR);
611     x=DIR[0];
612     for(i = 1;i<=6;i++)
613     {
614         if(x<=DIR[i+1])
615         {
616             x=DIR[i+1];
617             DIR[8] = i+1;
618         }
619     }
620     switch(direction)
621     {
622             case 7:
623                 break;
624             case 3:
625                 if(DIR[8] == 1 || DIR[8] == 2 || DIR[8] == 3){break;}
626                 else{DIR[8] = direction;}
627                 break;
628             case 5:
629                 if(DIR[8] == 1 || DIR[8] == 4 || DIR[8] == 5){break;}
630                 else{DIR[8] = direction;}
631                 break;
632             case 6:
633                 if(DIR[8] == 2 || DIR[8] == 4 || DIR[8] == 6){break;}
634                 else{DIR[8] = direction;}
635                 break;
636             case 1:
637             case 2:
638             case 4:
639                 DIR[8] = direction;
640                 break;
641             default:
642                 DIR[8] = direction;
643                 break;
644     }
645     
646     
647     return DIR[8];
648 }
649 
650 
651 
652 //~ int closegraph(charModel cmTEMP[],ctrlModel snakeModel[],int direction)
653 //~ {
654     //~ /*检测是否为闭合图形 1 蛇模型闭合 2 蛇模型+边界闭合 (沒有实现)*/
655     //~ int i;
656     //~ for(i=SCR_WIDTH*SCR_HEIGHT-1;i>=0;i--)//从蛇尾到倒找
657     //~ {
658         //~ if(snakeModel[i].type==null)
659         //~ {
660             //~ continue;
661         //~ }
662         //~ if(i==2)
663         //~ {
664             //~ return direction;
665         //~ }
666         //~ if(snakeModel[i].x-1==snakeModel[0].x && snakeModel[i].y-1==snakeModel[0].y){break;}
667         //~ if(snakeModel[i].x-1==snakeModel[0].x && snakeModel[i].y==snakeModel[0].y){break;}
668         //~ if(snakeModel[i].x-1==snakeModel[0].x && snakeModel[i].y+1==snakeModel[0].y){break;}
669         //~ if(snakeModel[i].x==snakeModel[0].x && snakeModel[i].y-1==snakeModel[0].y){break;}
670         //~ if(snakeModel[i].x==snakeModel[0].x && snakeModel[i].y+1==snakeModel[0].y){break;}
671         //~ if(snakeModel[i].x+1==snakeModel[0].x && snakeModel[i].y-1==snakeModel[0].y){break;}
672         //~ if(snakeModel[i].x+1==snakeModel[0].x && snakeModel[i].y==snakeModel[0].y){break;}
673         //~ if(snakeModel[i].x+1==snakeModel[0].x && snakeModel[i].y+1==snakeModel[0].y){break;}
674     //~ }
675     //~ /*如果结点为末尾无视*/
676     //~ if(snakeModel[i+1].type==null){return direction;}
677     //~ /*判断前结点方向*/
678     //~ movtype direfalse[2]={null,null};
679     //~ if(snakeModel[i-1].x==snakeModel[i].x)
680     //~ {
681         //~ if(snakeModel[i-1].y-snakeModel[i].y==1)
682         //~ {
683             //~ direfalse[0]=down;
684         //~ }
685         //~ else
686         //~ {
687             //~ direfalse[0]=up;
688         //~ }
689     //~ }
690     //~ else if(snakeModel[i-1].y==snakeModel[i].y)
691     //~ {
692         //~ if(snakeModel[i-1].x-snakeModel[i].x==-1)
693         //~ {
694             //~ direfalse[0]=left;
695         //~ }
696         //~ else
697         //~ {
698             //~ direfalse[0]=right;
699         //~ }
700     //~ }
701     //~ /*判断后结点方向*/
702     //~ if(snakeModel[i].x==snakeModel[i+1].x)
703     //~ {
704         //~ if(snakeModel[i].y-snakeModel[i+1].y==1)
705         //~ {
706             //~ direfalse[1]=down;
707         //~ }
708         //~ else
709         //~ {
710             //~ direfalse[1]=up;
711         //~ }
712     //~ }
713     //~ else if(snakeModel[i].y==snakeModel[i+1].y)
714     //~ {
715         //~ if(snakeModel[i].x-snakeModel[i+1].x==-1)
716         //~ {
717             //~ direfalse[1]=left;
718         //~ }
719         //~ else
720         //~ {
721             //~ direfalse[1]=right;
722         //~ }
723     //~ }
724     //~ /*方向*/
725     //~ for(i=0;i<2;i++)
726     //~ {
727         //~ if(snakeModel[0].type==direfalse[i])
728         //~ {
729             //~ direction-=1;
730             //~ continue;
731         //~ }
732         //~ if(direfalse[0]==direfalse[1])
733         //~ {
734             //~ break;
735         //~ }              
736         //~ switch(snakeModel[0].type)
737         //~ {
738             //~ case 0:
739                 //~ if(direfalse[i]==2)
740                 //~ {
741                     //~ direction-=4;
742                 //~ }
743                 //~ else if(direfalse[i]==3)
744                 //~ {
745                     //~ direction-=2;
746                 //~ }
747                 //~ break;
748             //~ case 1:
749                 //~ if(direfalse[i]==2)
750                 //~ {
751                     //~ direction-=2;
752                 //~ }
753                 //~ else if(direfalse[i]==3)
754                 //~ {
755                     //~ direction-=4;
756                 //~ }
757                 //~ break;
758             //~ case 2:
759                 //~ if(direfalse[i]==0)
760                 //~ {
761                     //~ direction-=2;
762                 //~ }
763                 //~ else if(direfalse[i]==1)
764                 //~ {
765                     //~ direction-=4;
766                 //~ }
767                 //~ break;
768             //~ case 3:
769                 //~ if(direfalse[i]==0)
770                 //~ {
771                     //~ direction-=4;
772                 //~ }
773                 //~ else if(direfalse[i]==1)
774                 //~ {
775                     //~ direction-=2;
776                 //~ }
777                 //~ break;
778             //~ default:
779                 //~ break;
780         //~ }
781     //~ }
782     //~ return direction;
783 //~ }

snakeHead.h

 1 #include <unistd.h>
 2 #include <stdlib.h>
 3 #include <curses.h>
 4 #include <time.h>
 5 #include <pthread.h>
 6 typedef enum {null=-2,stop=-1,left=0,right=1,up=2,down=3}movtype;
 7 typedef enum {air,food,wall}coltype;
 8 typedef struct {
 9     coltype type; 
10     int chartype;
11 }charModel;
12 typedef struct {
13     int x;
14     int y;
15     movtype type; 
16 }ctrlModel;
17 void writeLineQ(charModel cmTemp[],int bctrltime);
18 void removSnake(ctrlModel snakeModel[]);
19 void fallremovSnake(ctrlModel snakeModel[]);
20 int collidedeal(charModel cmTEMP[],ctrlModel snakeModel[]);
21 void addfood(ctrlModel snakeModel[],ctrlModel foodModel[],int amount);
22 void addsnakemod(ctrlModel snakeModel[],int amount);
23 void program_error(char error_string[]);
24 
25 #define SCR_WIDTH 60
26 #define SCR_HEIGHT 20
27 #define SNAKE_CHAR '*'
28 #define SNAKE_LENGTH 8
29 #define FOOD_AMOUNT_MAX 10
30 #define FOOD_CHAR '0'
31 #define SNAKEAI_DEPTH 15

截图:

转载于:https://www.cnblogs.com/gnuer/archive/2012/10/29/2745211.html

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 文本监控 :oninput onchange onpropertychange 的区别

    oninput: 实时监控输入文本,当文本有改变时触发(非离开焦点),非IE(IE9以上支持)浏览器都支持(js赋值不触发); onpropertychange:实时监控输入文本,当文本有改变时触发(非离开焦点),仅IE浏览器支持(JS赋值触发); onchange:文本发生变化时,离开焦点触发。 转载于:https://ww…...

    2024/4/27 8:16:20
  2. Java字节码进制转换

    在理解二进制和十进制、十六进制时发现的,作为后续参考保存!public class codeCon {/*** 字符串转换成十六进制值* @param bin String 我们看到的要转换成十六进制的字符串* @return */public static String bin2hex(String bin) {char[] digital = "0123456789ABCDEF&q…...

    2024/5/3 6:21:37
  3. 实时监听input中值变化oninput & onpropertychange

    在 Web 开发中经常会碰到需要动态监听输入框值变化的情况,如果使用 onkeydown、onkeypress、onkeyup 这个几个键盘事件来监测的话,监听不了右键的复制、剪贴和粘贴这些操作,处理组合快捷键也很麻烦。因此这篇文章向大家介绍一种完美的解决方案:结合 HTML5 标准事件 oninput…...

    2024/4/12 15:47:25
  4. 视频教程-通俗易懂的Go语言教程第4季(含配套资料)-Go语言

    通俗易懂的Go语言教程第4季(含配套资料)张长志技术全才、擅长领域:区块链、大数据、Java等。10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业。拥有丰富的企业应用软件开发经验、深厚的软件架构设计理论基础及实践能力。…...

    2024/4/20 12:30:34
  5. 润乾报表的数据源配置

    润乾报表设计器配置连接数据源时,它的配置信息以 SQLserver为例:这两张图想要表达的意思是,润乾报表的数据源设置 和对项目的DataSource配置一致的,但是需要注意一点的是,,刚刚安装的润乾,,在本机的安装目录下是没有SQLserver的连接jar包的,这也是导致我明明配置好了但…...

    2024/4/10 6:20:34
  6. onpropertychange属性

    当一个input标签的value通过键盘改变后失去焦点的时候,我们可以用onchange捕获事件,IE和FireFox都有效。而通过JavaScript来改变value的时候,onchange无法捕获事件,这时候我们可以用onpropertychange来捕获onpropertychange对于JavaScript和键盘对value的改变都有效。遗憾的…...

    2024/4/12 13:07:29
  7. Java字节码.class文件案例分析

    javac编译过后的字节码(16进制) 下边的截图就是.class文件的内容它对应的源代码部分的内容为 核心概念 Java虚拟机规范中规定,Class文件格式采用一种类似C语言结构体的伪结构来存储,它只有两种数据类型 无符号数(基本数据类型) 主要用于描述数字、索引引用、数量值、或UT…...

    2024/4/12 14:28:45
  8. 最小生成树一·Prim算法 (模板题)

    描述最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了!但是,问题也接踵而来——小Hi现在手上拥有N座城市,且已知这N座城市中任意两座城市之间建造道路所需要的费用,小Hi希望知道,最少花费多少就可以使得任意两座城市都可以通…...

    2024/4/20 19:47:02
  9. C语言300行代码实现贪吃蛇

    完整代码:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> #include <time.h>#define ARRAY_SIZE 20 // 区域大小 int AreaArray[ARRAY_SIZE][ARRAY_SIZE]…...

    2024/4/14 22:59:21
  10. 视频教程-通俗易懂的Go语言教程第2季(含配套资料)-Go语言

    通俗易懂的Go语言教程第2季(含配套资料)张长志技术全才、擅长领域:区块链、大数据、Java等。10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业。拥有丰富的企业应用软件开发经验、深厚的软件架构设计理论基础及实践能力。…...

    2024/4/12 7:53:09
  11. 兼容Firefox和IE的onpropertychange事件oninput

    原文 兼容Firefox和IE的onpropertychange事件oninput onpropertychange能够捕获每次输入值的变化。例如:对象的value值被改变时,onpropertychange能够捕获每次改变,而onchange需要执行某个事件才可以捕获。 在文本框输入数据的时候,当键盘按下并放开的时候可以使用onkeyup来…...

    2024/4/30 19:24:17
  12. javap反编译java字节码文件

    概述:javap是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码,从而对代码内部的执行逻辑进行分析。 语法:把java文件编译为class文件:javac Test.java (Test.java为java文件名) 生成对应的 .class 文件 Test.class执行javap操作:javap 命令行 cla…...

    2024/4/26 15:09:33
  13. ODBC连接字符串

    转自:http://www.cnblogs.com/mattins/archive/2011/06/07/2074029.htmlaccess "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"oracle &qu…...

    2024/4/13 1:11:11
  14. Java字节码转换一定要保持一致

    public static void main(String[] args)throws Exception {String msg="汉字";byte[] bytes=msg.getBytes("utf-8");String ms=new String(bytes,0,bytes.length,"utf-8");System.out.print(ms);}源数据是utf-8那么你接收后,依然要按原格式utf…...

    2024/4/12 7:53:03
  15. 【Go语言(golang)教程】A Tour of Go 七十集大全

    http://www.aqee.net/go/a-tour-of-go/#5【Go语言(golang)教程】ATour of Go:#1 Hello World!【Go语言(golang)教程】ATour of Go:#2 安装离线练习器【Go语言(golang)教程】ATour of Go:#3 包【Go语言(golang)教程】ATour of Go:#4 import【Go语言(golang)教程】ATour of Go:#5…...

    2024/4/20 8:12:06
  16. onpropertychange 实时监控input输入框事件实现

    在 Web 开发中经常会碰到需要动态监听输入框值变化的情况,可以使用onchange、onblur 事件,但是要失去焦点时才能触发事件,这里介绍onpropertychange实现动态监听input值 1.IE浏览器$id = document.getElementById("id"); $id.onpropertychange = function() {  …...

    2024/4/12 7:53:03
  17. 为什么要推荐大家学习字节码?

    配套视频:为什么推荐大家学习Java字节码https://www.bilibili.com/video/av77600176/一、背景本文主要探讨:为什么要学习 JVM 字节码?可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来…...

    2024/4/19 11:03:57
  18. C语言贪吃蛇(光标版)(前辈的)

    //前辈的文章好像失联了,我不能转载他的文章,所以写的原创,请见谅。 #include <stdio.h> #include <time.h> #include <windows.h> #include <stdlib.h>//哪里用到了? #include <conio.h>//控制台 #define INFO_X 100 //提示信息区横坐标 #…...

    2024/4/14 3:09:52
  19. TextBox的value改变触发的事件为onpropertychange

    有时候需要在textbox的值改变的时候就触发一些事件,onchange事件是在焦点失去以后才触发的,这样就不能做到每输入一个字符就触发一次的效果。使用onpropertychange事件,只要TextBox的值改变就能触发该事件。即使是其他地方赋值也能够触发。...

    2024/4/12 7:53:45
  20. 学习编程悟出8个字《精辟》!

    1专 2静 3谦 4筹 5悟 6慎 7透 8恒1."忽如一夜春风来,千树万树梨花开."现在的技术百花齐放,切忌不可贪. 不要盲目的追求新技术,唯有算法才是灵魂.2."非淡泊无以明志,非宁静无以致远."要想达到高的境界,必须能够心静. 年轻的程序员都很浮躁,这…...

    2024/4/12 7:54:09

最新文章

  1. C++ string类

    目录 0.前言 1.为什么学习string类 1.1 C语言字符串的局限性 1.2 C string类的优势 2.标准库中的string类 2.1 字符串作为字符序列的类 2.2 接口与标准容器类似 2.3 基于模板的设计 2.4 编码和字符处理 3.string类的常用接口说明 3.1构造函数 3.1.1默认构造函数 3…...

    2024/5/3 6:25:13
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 自动化标准Makefile与lds

    makefile的自动化&#xff0c;需要使用变量&#xff0c;以及自动变量。 实行命令行与参数的分离。 命令行只与变量打交道&#xff0c;而变量则携带不同的参数&#xff0c;这样&#xff0c;通过修改变量&#xff0c;命令的执行结果不同。 可以简单理解为&#xff0c;命令行是个…...

    2024/4/30 2:45:52
  4. 全自动封箱机的工作原理:科技与效率的完美结合

    随着科技的不断发展&#xff0c;越来越多的自动化设备走进了我们的日常生活和工业生产中。其中&#xff0c;全自动封箱机作为物流包装领域的重要一环&#xff0c;凭借其高效、精准的工作性能&#xff0c;正逐渐成为提升生产效率、降低劳动成本的得力助手。星派就来与大家深入探…...

    2024/5/1 13:53:51
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57