• 个人简介

    AKIOI

    #include <bits/stdc++.h>
    #include <algorithm>
    #include <deque>
    #include <functional>
    #include <iterator>
    #include <vector>
    #include <list>
    #include <map>
    #include <memory>
    #include <numeric>
    #include <queue>
    #include <set>
    #include <stack>
    #include <utility>
    #include <iostream>
    #include <cmath>
    #include <iomanip>
    #include <cstring>
    #include <cstdio>
    
    #include <bits/stdc++.h>
    #include <windows.h>
    #include <unistd.h>
    using namespace std;
    char a[4][4];
    bool fpa(char x[4][4]){
    	int cnt=0;
    	for(int i=1;i<=3;i++)if(a[1][i]=='x')cnt++;
    	if(cnt==3&&a[1][1]==a[1][2]&&a[1][1]==a[1][3]&&a[1][2]==a[1][3])return 1;
    	cnt=0;
      	for(int i=1;i<=3;i++)if(a[2][i]=='x')cnt++;
      	if(cnt==3&&a[2][1]==a[2][2]&&a[2][1]==a[2][3]&&a[2][2]==a[2][3])return 1;	
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[3][i]=='x')cnt++;
      	if(cnt==3&&a[3][1]==a[3][2]&&a[3][1]==a[3][3]&&a[3][2]==a[3][3])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][1]=='x')cnt++;
      	if(cnt==3&&a[1][1]==a[2][1]&&a[1][1]==a[3][1])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][2]=='x')cnt++;
      	if(cnt==3&&a[1][2]==a[2][2]&&a[1][2]==a[3][2])return 1;	
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][3]=='x')cnt++;
      	if(cnt==3&&a[1][3]==a[2][3]&&a[1][3]==a[3][3])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][i]=='x')cnt++;
      	if(cnt==3&&a[1][1]==a[2][2]&&a[1][1]==a[3][3])return 1;
      	cnt=0;
      	for(int i=3;i>=1;i--)if(a[3-i+1][i]=='x')cnt++;
      	if(cnt==3&&a[1][3]==a[2][2]&&a[1][1]==a[3][1])return 1;
      	return 0;
    }
    bool fpb(char x[4][4]){
      	int cnt=0;
      	for(int i=1;i<=3;i++)if(a[1][i]=='o')cnt++;
      	if(cnt==3&&a[1][1]==a[1][2]&&a[1][1]==a[1][3]&&a[1][2]==a[1][3])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[2][i]=='o')cnt++;
      	if(cnt==3&&a[2][1]==a[2][2]&&a[2][1]==a[2][3]&&a[2][2]==a[2][3])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[3][i]=='o')cnt++;
      	if(cnt==3&&a[3][1]==a[3][2]&&a[3][1]==a[3][3]&&a[3][2]==a[3][3])return 1;
       	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][1]=='o')cnt++;
      	if(cnt==3&&a[1][1]==a[2][1]&&a[1][1]==a[3][1])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][2]=='o')cnt++;
      	if(cnt==3&&a[1][2]==a[2][2]&&a[1][2]==a[3][2])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][3]=='o')cnt++;
      	if(cnt==3&&a[1][3]==a[2][3]&&a[1][3]==a[3][3])return 1;
      	cnt=0;
      	for(int i=1;i<=3;i++)if(a[i][i]=='o')cnt++;
      	if(cnt==3&&a[1][1]==a[2][2]&&a[1][1]==a[3][3])return 1;
      	cnt=0;
      	for(int i=3;i>=1;i--)if(a[3-i+1][i]=='o')cnt++;
      	if(cnt==3&&a[1][3]==a[2][2]&&a[1][1]==a[3][1])return 1;
      	return 0;
    }
    bool full(){
      	int cnt=0;
      	for(int i=1;i<=3;i++)for(int j=1;j<=3;j++)if(a[i][j]!='*')cnt++;
      	if(cnt==9)return 1;
      	return 0;
    }
    int main(void){
      	system("color fc");
    	cout<<"\n\n\n\n\n\n\n                                  井字棋\n\n\n\n";
      	cout<<"                              按'Q'键以开始...\n\n\n\n\n\n\n\n\n";
      	char s;cin>>s;
      	system("cls"); 
      	printf("你想选什么角色?         A:x         B:o\nYour choice: ");
      	int player=0;cin>>s;
      	if(s=='A')player=0;
    	else player++;
      	system("cls");
      	if(player)cout<<"You are o\n"; 
      	else cout<<"You are x\n";
      	for(int i=1;i<=3;i++){
      		for(int j=1;j<=3;j++){
      			a[i][j]='*';
      			cout<<a[i][j]<<" ";
      		}
      		cout<<endl;
      	}
      	cout<<"Ruler:\n1 ";
      	for(int i=2;i<=9;i++){
      		cout<<i<<" ";
      		if(i%3==0)cout<<endl;
      	}	
      	int x,y;
      	while(!fpa(a)&&!fpb(a)&&!full()){
      		bool fl=0;
      		cout<<"Map number: ";
      		char ch;
      		cin>>ch;
      		int t=ch-'0',x=(t+2)/3,y=t%3;
      		if(!y)y=3;
      		if(player%2&&a[x][y]=='*')a[x][y]='o';
      		else if(player%2==0&&a[x][y]=='*')a[x][y]='x';
      		else{
      			cout<<"You has entred a wrong place!"<<endl;
      			int s=1;
      			sleep(s);
      			fl=1;
      		}
      		system("cls");
      		for(int i=1;i<=3;i++){
      			for(int j=1;j<=3;j++)cout<<a[i][j]<<" ";
      			cout<<endl;
      		}
      		cout<<"Ruler:\n1 ";
      		for(int i=2;i<=9;i++){
      			cout<<i<<" ";
      			if(i%3==0)cout<<endl;
      		}
      		if(fl)continue;
      		player++;Sleep(1000);
      	}
      	if(fpa(a)){
      		system("cls");
      		cout<<"Player x wins!\n";
      	}
      	if(fpb(a)){
      		system("cls");
      		cout<<"Player o wins!\n";
      	}
      	if(full()){
      		system("cls");
      		cout<<"Nobody wins......\n";
      	}
      	system("pause");
    	return 0; 
    }
    
    #include <bits/stdc++.h>
    #include <windows.h>
    #include <conio.h>
    using namespace std;
    const double pi = 3.1415926536;
    int toint (float a) {
    	return ((int) (a * 10 + 5)) / 10;
    }
    
    void Color (int a) {
      if (a == 0 || a == 14 || a == 20) {
      	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    		FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    	} else if (a == 1 || a == 12) {
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    		FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
    	} else if (a == 2) {
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    		FOREGROUND_INTENSITY|FOREGROUND_GREEN);
    	} else if (a == 3) {
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    		FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
    
    	} else if (a == 4 || a == 11) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    
    		FOREGROUND_INTENSITY|FOREGROUND_RED);
    
    	} else if (a == 5 || a == 13) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    
    		FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    
    	} else if (a == 7) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    
    		FOREGROUND_GREEN|FOREGROUND_BLUE);
    
    	} else if (a == 15) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
    
    	} else if (a == 16) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
    
    	} else if (a == 17) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED);
    
    	} else if (a == 8) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    
    	} else if (a == 6) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    
    		FOREGROUND_INTENSITY|FOREGROUND_BLUE);
    
    	} else if (a == 9) {
    
    		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    
    		FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN);
    
    	}
    
    }
    
    void SetPos (float x, float y) {
    
      int xx = toint (x), yy = toint (y);
    
      COORD pos;
    
    	pos.X = yy * 2;
    
    	pos.Y = xx;
    
    	SetConsoleCursorPosition (GetStdHandle (STD_OUTPUT_HANDLE), pos);
    
    }
    
    struct node {
    
      int W, W2, S, mS;
    
      float X, Y;
    
      float vx, vy;
    
      float ax, ay;
    
      bool go, boom;
    
    } blt[100001], pig[100001], boo[100001];
    
    int T, yX, yY, Xy, put, K, K2, Sle, What;
    
    int Bot, Pit, Blt, Pig, Sco, pigk, scok;
    
    int m[41][41];
    
    void Cout (int a, int x, int y) {
    
      if (a == 1) {
    
      	SetPos (x, y);
    
    		Color (5);
    
    		cout << put << ' ';
    
    	}
    
    	if (y == 202) {
    
        SetPos (pig[a].X, pig[a].Y);
    
    		cout << ". ";
    
        if ((pig[a].W == 2 || pig[a].W == 3) && pig[a].X >= 2) {
    
        	SetPos (pig[a].X - 2, pig[a].Y);
    
    			cout << ". ";
    
    			SetPos (pig[a].X - 1, pig[a].Y);
    
    			cout << ". ";
    
    		} else if (pig[a].W == 4) {
    
        	SetPos (pig[a].X, pig[a].Y - 1);
    
    			cout << ". ";
    
    		} else if(pig[a].W == 5) {
    
    			SetPos (pig[a].X - 1, pig[a].Y);
    
    			cout << ". ";
    
    			SetPos (pig[a].X - 1, pig[a].Y - 1);
    
    			cout << ". ";
    
    		}
    
      }
    
      if (a == 2) {
    
      	for (int i = 0; i <= 40; i++) {
    
      		for (int j = 0; j <= 40; j++) {
    
      			if (i <= 18 && m[i][j] == 1) {
    
      				SetPos (i, j);
    
    					Color (7);
    
    					cout << "■";
    
    				}
    
    				if (m[i][j] >= 2 && m[i][j] <= 19) {
    
    					SetPos (i, j);
    
    					Color (5);
    
    					cout << "█";
    
    					m[i][j]++;
    
    				}
    
    				if (m[i][j] > 19 && m[i][j] <= 29) {
    
    					SetPos (i, j);
    
    					Color (0);
    
    					cout << "█";
    
    					m[i][j]++;
    
    					if (m[i][j] == 30) {
    
    						SetPos (i, j);
    
    						Color (0);
    
    						cout << " ";
    
    						m[i][j] = 0;
    
    					}
    
    					if (m[i][j] >= 31 && m[i][j] <= 49) {
    
    						SetPos (i, j);
    
    						Color (0);
    
    						cout << "■";
    
    						m[i][j]++;
    
    					}
    
    					if (m[i][j] == 50) {
    
    						SetPos (i, j);
    
    						Color (7);
    
    						cout << "■";
    
    						m[i][j] = 1;
    
    					}
    
    				}
    
    			}
    
    		}
    
    	}
    
      if (y == 666) {
    
        SetPos (blt[a].X, blt[a].Y);
    
        Color (10 + blt[a].W);
    
    		cout<<"●";
    
      }
    
    	Color (0);
    
    }
    
    void Go (int a) {
    
      SetPos (blt[a].X, blt[a].Y);
    
    	cout << "..";
    
      blt[a].X += blt[a].vx / 2;
    
    	blt[a].Y += blt[a].vy / 2;
    
    	blt[a].vx += blt[a].ax / 2;
    
    	blt[a].vy += blt[a].ay / 2;
    
      if (blt[a].X >= 20) {
    
      	blt[a].X = 19;
    
    	}
    
      if (blt[a].X > 20 || blt[a].Y > 38 || blt[a].X < 0 || blt[a].Y <= 0) {
    
      	blt[a].go = 1;
    
    	}
    
      if (blt[a].W2 == 1 && blt[a].Y >= Xy) {
    
    		blt[a].go = 1;
    
    		Sle = 0;//地跑鸟
    
    	}
    
      if (blt[a].W2 == 0) {
    
        for (int i = 0; i <= blt[a].vx / 2 + 1; i++) {
    
          if (blt[a].vx > 0 && m[toint (blt[a].X) + i][toint (blt[a].Y)] == 1) {
    
            if (blt[a].W != 5) {
    
            	blt[a].boom = 1;
    
    				}
    
            blt[a].X = toint (blt[a].X) + i - 1;
    
    				blt[a].Y += blt[a].vy / 2;
    
    				blt[a].vx = -blt[a].vx * 0.4;
    
    				blt[a].vy = blt[a].vy * 0.8;
    
            if (blt[a].W == 3) {
    
            	blt[a].ax = 0.5;
    
    				}
    
    				if (blt[a].W == 7) {
    
    					blt[a].vx *= 2;
    
    				}
    
            if (blt[a].W == 10) {
    
            	blt[a].go = 1;
    
    					Bot++;
    
    					boo[Bot].X = blt[a].X;
    
    					boo[Bot].Y = blt[a].Y;
    
    					boo[Bot].S = 1;
    
    					boo[Bot].mS = 4;
    
    				}
    
          }
    
          if (blt[a].vx < 0 && m[toint (blt[a].X) - i][toint(blt[a].Y)] == 1) {
    
            if (blt[a].W != 5) {
    
            	blt[a].boom = 1;
    
    				}
    
            blt[a].X = toint (blt[a].X) + i + 1;
    
    				blt[a].Y += blt[a].vy / 2;
    
    				blt[a].vx = -blt[a].vx;
    
    				blt[a].vy=blt[a].vy * 0.8;
    
            if (blt[a].W == 3) {
    
            	blt[a].ax = 0.5;
    
    				}
    
    				if (blt[a].W == 7) {
    
    					blt[a].vx *= 2;
    
    				}
    
            if (blt[a].W == 10) {
    
            	blt[a].go = 1;
    
    					Bot++;
    
    					boo[Bot].X = blt[a].X;
    
    					boo[Bot].Y = blt[a].Y;
    
    					boo[Bot].S = 1;
    
    					boo[Bot].mS = 4;
    
    				}
    
          }
    
        }
    
        if (abs (blt[a].vx) <= 0.1 && abs (blt[a].vy) <= 0.1 && abs (blt[a].ay) <= 0.1) {
    
          blt[a].go = 1;
    
          if (blt[a].W == 5) {
    
          	Bot++;
    
    				boo[Bot].X = blt[a].X;
    
    				boo[Bot].Y = blt[a].Y;
    
    				boo[Bot].S = 1;
    
    				boo[Bot].mS = 4;
    
    				blt[a].go = 1;
    
    			}
    
        }
    
      }
    
      if (blt[a].go == 0) {
    
      	Cout (a, 0, 666);
    
    	}
    
    }
    
    void Kill (int a) {
    
      if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) {
    
      	Cout (a, 202, 202);
    
    		pig[a].Y = 16;
    
    	}
    
      if (pig[a].go == 0 && pig[a].W == 4 && pig[a].Y < 20) {
    
      	pig[a].W = 1;
    
    	}
    
      int R = rand () % 50;
    
    	Cout (a, 202, 202);
    
      //清除猪猪
    
      pig[a].X += pig[a].vx / 2;
    
    	pig[a].Y += pig[a].vy / 2;
    
    	pig[a].vx += pig[a].ax / 2;
    
    	pig[a].vy += pig[a].ay / 2;
    
      for (int i = -2; i <= pig[a].vx / 2 + 1; i++) {
    
        if (m[toint (pig[a].X) + i][toint (pig[a].Y)] == 1) {
    
        	pig[a].X = toint (pig[a].X) + i - 1;
    
    			pig[a].Y += pig[a].vy / 2;
    
    			pig[a].vx = -pig[a].vx * 0.5;
    
    			pig[a].vy = pig[a].vy * 0.8;
    
    		}
    
      }
    
      for (int i = Blt - 10; i <= Blt; i++) {
    
        if (pig[a].W == 5 && blt[i].go == 0 && abs (pig[a].X - blt[i].X) <= 1
    
    		&& abs (pig[a].Y - blt[i].Y) <= 1) {
    
    			m[toint (pig[a].X) - 1][toint (pig[a].Y)] = 2;
    
    			pig[a].W2++;
    
    			Sco += 2;
    
    			break;
    
    		}
    
        if (pig[a].W == 5 && m[toint (pig[a].X)][toint (pig[a].Y)] >= 2 &&
    
    		m[toint (pig[a].X)][toint (pig[a].Y)] < 30) {
    
    			m[toint (pig[a].X) - 1][toint (pig[a].Y)] = 2;
    
    			pig[a].W2++;
    
    			Sco += 2;
    
    			break;
    
    		}
    
        if (blt[i].go == 0 && abs (pig[a].X - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) {
    
          if (pig[a].W == 6) {
    
          	Bot++;
    
    				boo[Bot].X = pig[a].X;
    
    				boo[Bot].Y = pig[a].Y;
    
    				boo[Bot].S = 1;
    
    				boo[Bot].mS = 4;
    
    				blt[i].go = 1;
    
    			}
    
          m[toint (pig[a].X)][toint (pig[a].Y)] = 2;
    
    			pig[a].go = 1;
    
    			Pig--;
    
    			Sco+=10;
    
    			break;
    
        }
    
        if (m[toint (pig[a].X)][toint (pig[a].Y)] >= 2 &&
    
    		m[toint (pig[a].X)][toint (pig[a].Y)] < 30) {
    
          if (pig[a].W == 6) {
    
          	Bot++;
    
    				boo[Bot].X = pig[a].X;
    
    				boo[Bot].Y = pig[a].Y;
    
    				boo[Bot].S = 1;
    
    				boo[Bot].mS = 4;
    
    			}
    
          pig[a].go = 1;
    
    			Pig--;
    
    			Sco += 10;
    
    			break;
    
        }
    
        if ((pig[a].W == 2 || pig[a].W == 3) && blt[i].go == 0 &&
    
    		abs (pig[a].X - 2 - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) {
    
    			m[toint (pig[a].X)][toint (pig[a].Y)] = 2;
    
    			pig[a].go = 1;
    
    			Pig--;
    
    			Sco += 10;
    
    			break;
    
    		}
    
        if ((pig[a].W == 2 || pig[a].W == 3) &&
    
    		m[toint (pig[a].X - 2)][toint (pig[a].Y)] >= 2
    
    		&& m[toint (pig[a].X - 2)][toint (pig[a].Y)] < 30) {
    
    			pig[a].go = 1;
    
    			Pig--;
    
    			Sco += 10;
    
    			break;
    
    		}
    
      }
    
      //弄死猪猪
    
      if (pig[a].go == 0) {
    
        if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) {
    
        	Cout (a, 202, 202);
    
    			pig[a].Y = 16;
    
    		}
    
        if (pig[a].go == 0 && pig[a].W == 4 &&pig[a].Y < 20) {
    
        	pig[a].W = 1;
    
    		}
    
        int Xx = toint (pig[a].X), Xy = toint (pig[a].Y);
    
        if (pig[a].W == 6) {
    
        	SetPos (pig[a].X, pig[a].Y);
    
    			Color (9);
    
    			cout << "TN";
    
    			Color (0);
    
    		} else {
    
    	    SetPos (pig[a].X, pig[a].Y);
    
    			Color (2);
    
    			cout << "●";
    
      	  if ((pig[a].W == 2 || pig[a].W == 3) && pig[a].X >= 2) {
    
      	  	SetPos (pig[a].X - 2, pig[a].Y);
    
    				Color (0);
    
    				cout << "○";
    
    				SetPos (pig[a].X - 1, pig[a].Y);
    
    				cout << "|";
    
    			} else if (pig[a].W == 4) {
    
    				SetPos (pig[a].X, pig[a].Y - 1);
    
    				Color (2);
    
    				cout << "﹃";
    
    			} else if (pig[a].W == 5) {
    
    	      SetPos (pig[a].X - 1, pig[a].Y);
    
    				Color (8);
    
    				SetPos (pig[a].X - 1, pig[a].Y - 1);
    
    				cout << "▁";
    
      	    if (pig[a].W2 == 0) {
    
      	    	cout << "▅";
    
    				} else if (pig[a].W2 == 1) {
    
    					cout << "▃";
    
    				} else if (pig[a].W2 == 2) {
    
    					cout << "▂";
    
    				} else if (pig[a].W2 == 3) {
    
    					pig[a].W = 1;
    
    					pig[a].W2 = 0;
    
    					SetPos (pig[a].X - 1, pig[a].Y - 1);
    
    					cout << " ";
    
    				}
    
        	}
    
        }
    
        //输出猪猪
    
        if (pig[a].W == 2 && pig[a].X > pig[a].S) {
    
        	pig[a].W = 3;
    
    			pig[a].ax = -0.4;
    
    			pig[a].vx = 1.5;
    
    		} else if (pig[a].W == 3 && pig[a].X <= pig[a].S) {
    
    			pig[a].W = 2;
    
    			pig[a].ax = 0.4;
    
    			pig[a].vx = -1.5;
    
    		}
    
        if ((pig[a].W == 2 || pig[a].W == 3) && (pig[a].Y <= 10 || pig[a].Y >= 38)) {
    
        	pig[a].vy *= -1;
    
    		}
    
        if (pig[a].W == 4 && R == 0 && pig[a].X == 20) {
    
        	pig[a].vx = -((rand () % 40) / 10);
    
    		}
    
        if(pig[a].W == 4) {
    
          int r = rand () % 20;
    
          for (int i = Blt - 10; i <= Blt; i++) {
    
          	if (r <= 5 && blt[i].go == 0 && pig[a].Y - blt[i].Y <= 5 &&
    
    				abs (blt[i].X - pig[a].X) <= 1.5 && r < 5) {
    
    					r = 0;
    
    					break;
    
    				}
    
    			}
    
          if (r == 0) {
    
            m[toint (pig[a].X)][toint (pig[a].Y) - 2] = 10;
    
    				m[toint (pig[a].X)][toint (pig[a].Y) - 3] = 2;
    
            for (int j = toint (pig[a].Y) - 1; j >= toint (pig[a].Y) - 5; j--) {
    
              for (int i = Blt - 10; i <= Blt; i++) {
    
              	if (blt[i].go == 0 && !(blt[i].W == 3 && blt[i].boom == 1)
    
    						&& blt[i].W2 == 0 && toint (blt[i].Y) == j
    
    						&& abs (blt[i].X - pig[a].X) <= 2) {
    
    							blt[i].vy = -2;
    
    						}
    
    					}
    
              for (int i = Pit - 50; i <= Pit; i++) {
    
              	if (pig[i].go == 0 && toint (pig[i].Y) == j && abs (pig[i].X - pig[a].X) <= 2) {
    
              		pig[i].vy = -1;
    
    						}
    
    					}
    
            }
    
          }
    
        }
    
        //移动猪猪
    
        if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) {
    
        	Cout (a, 202, 202);
    
    			pig[a].Y = 16;
    
    		}
    
        if (pig[a].go == 0 && pig[a].W == 4 && pig[a].Y < 20) {
    
    			pig[a].W = 1;
    
    		}
    
        if (pig[a].X > 20 || pig[a].Y > 38 || pig[a].X < 0 || pig[a].Y <= 0) {
    
        	pig[a].go = 1;
    
    			Pig--;
    
    			Cout (a, 202, 202);
    
    		}
    
        //清除猪猪
    
      }
    
    }
    
    void Creat (int a, int p) {
    
      if (a == -1 && p == -1) {
    
        Blt++;
    
    		blt[Blt].W = What;
    
    		blt[Blt].W2 = 1;
    
        blt[Blt].vy = 1;
    
    		blt[Blt].X = 19;
    
    		blt[Blt].Y = 0;
    
    		blt[Blt].boom = 1;
    
      } else if (a == 0 && p == -1) {
    
        int u = rand () % 7 + 1, U = rand() % 30;
    
        if (u >= 5) {
    
        	Pit++;
    
    			pig[Pit].Y = rand () % 15 + 20;
    
    			pig[Pit].X = 2;
    
    			pig[Pit].ax = 0.5;
    
    			pig[Pit].W = 1;
    
    		} else if (u == 1) {
    
    			Pit++;
    
    			pig[Pit].Y = rand () % 15 + 20;
    
    			pig[Pit].X = 2;
    
    			pig[Pit].vy = 0.5;
    
    			pig[Pit].ax = 0.5;
    
    			pig[Pit].S = rand () % 5 + 7;
    
    			pig[Pit].W = 2;
    
    		} else if (u == 2) {
    
    			Pit++;
    
    			pig[Pit].Y = rand () % 15 + 20;
    
    			pig[Pit].X = 2;
    
    			pig[Pit].ax = 0.5;
    
    			pig[Pit].W = 4;
    
    		} else if (u == 3) {
    
    			Pit++;
    
    			pig[Pit].Y = rand () % 15 + 20;
    
    			pig[Pit].X = 2;
    
    			pig[Pit].ax = 0.5;
    
    			pig[Pit].W = 5;
    
    		} else if (u == 4) {
    
    			Pit++;
    
    			pig[Pit].Y = rand () % 15 + 20;
    
    			pig[Pit].X = 2;
    
    			pig[Pit].ax = 0.5;
    
    			pig[Pit].W = 6;
    
    		}
    
        if (U == 1) {
    
        	Bot++;
    
    			boo[Bot].Y = rand () % 13 + 15;
    
    			boo[Bot].X = (rand () % 4) * 3 + 8;
    
    			boo[Bot].S = 0;
    
    			boo[Bot].mS = rand () % 2 + 2;
    
    			boo[Bot].W2 = 1;
    
    		}
    
      } else {
    
        Blt++;
    
    		blt[Blt].W = What;
    
        if (a == 1) {
    
    			blt[Blt].X = yX;
    
    			blt[Blt].Y = yY;
    
    			blt[Blt].ax = 0.5; //抛物线
    
    		}
    
        blt[Blt].vx = -3.5 * sin (p * pi / 180);
    
        blt[Blt].vy = 3 * cos (p * pi / 180);
    
        if (p <= 45) {
    
        	blt[Blt].vy *= 1 + (0.33 - 0.01 * (45 - p));
    
    		}
    
        if (p >= 45) {
    
        	blt[Blt].vy *= 1 + (0.33 - 0.01 * (p - 45));
    
    		}
    
        if (blt[Blt].W == 6) {
    
        	blt[Blt].vy *= 1.2;
    
    			blt[Blt].ax = 0.4;
    
    		}
    
      }
    
    }
    
    void Boom (int a) {
    
      if (boo[a].W2 == 0) {
    
        int ms = boo[a].mS, s = boo[a].S, x = boo[a].X, y = boo[a].Y;
    
        if (s == ms) {
    
        	return ;
    
    		}
    
        for (int i = x - s; i <= x + s; i++) {
    
        	for (int j = y - s; j <= y + s; j++) {
    
        		float k = (i - x) * (i - x) + (j - y) * (j - y) - s * s;
    
          	if (k <= s && k >= -s && i <= 20 && j <= 38 && i >= 0 && j > 0 && m[i][j] != 1) {
    
          		m[i][j] = 2;
    
    				}
    
    			}
    
    		}
    
        boo[a].S++;
    
      }
    
      if (boo[a].W2 == 1) {
    
        int ms = boo[a].mS, s = boo[a].S, x = boo[a].X, y = boo[a].Y;
    
        if (s == ms) {
    
        	return ;
    
    		}
    
        if (y - s > 10) {
    
        	m[x][y-s] = 31 - 31 * (boo[a].W2 - 1);
    
    		}
    
        if (y + s < 40) {
    
        	m[x][y+s] = 31 - 31 * (boo[a].W2 - 1);
    
    		}
    
        boo[a].S++;
    
      }
    
    }
    
    void Move (int a) {
    
      Color (5);
    
      if (a == -2) {
    
      	SetPos (17, Xy);
    
    		cout << "    ";
    
    		SetPos (18, Xy);
    
    		cout << "    ";
    
    		SetPos (19, Xy);
    
    		cout << "    ";
    
    		SetPos (20, Xy);
    
    		cout << "    ";
    
    	}
    
      if (a == -1) {
    
      	SetPos (17, Xy);
    
    		cout << "    ";
    
    		SetPos (18, Xy);
    
    		cout << " ┃ ┃";
    
    		SetPos (19, Xy);
    
    		cout << " ╰┳╯";
    
    		SetPos (20, Xy);
    
    		cout << "   ▏";
    
    	}
    
      if (a == 0) {
    
      	SetPos (18, Xy);
    
    		cout << " ┃";
    
    		Color (What + 10);
    
    		cout << "●";
    
    		Color (5);
    
    		cout << "┃";
    
    		SetPos (19, Xy);
    
    		cout << " ╰┳╯";
    
    		SetPos (20, Xy);
    
    		cout << "   ▏";
    
    	}
    
      if (a == 1) {
    
      	SetPos (18, Xy);
    
    		cout << " ";
    
    		Color (What + 10);
    
    		cout << "●";
    
    		Color (5);
    
    		cout << " ┃";
    
    		SetPos (19, Xy);
    
    		cout << " ╰┳╯";
    
    		SetPos (20, Xy);
    
    		cout << "   ▏";
    
    	}
    
      if (a == 2) {
    
      	SetPos (18, Xy);
    
    		Color (What + 10);
    
    		cout << "●";
    
    		Color (5);
    
    		cout << "┃ ┃";
    
    		SetPos (19, Xy);
    
    		cout << " ╰┳╯";
    
    		SetPos (20, Xy);
    
    		cout << "   ▏";
    
    	}
    
      if (a == 3) {
    
      	SetPos (18, Xy);
    
    		cout << " ┃ ┃";
    
    		SetPos (19, Xy);
    
    		Color (What + 10);
    
    		cout << "●";
    
    		Color (5);
    
    		cout << "╰┳╯";
    
    		SetPos (20, Xy);
    
    		cout << "   ▏";
    
    	}
    
      if (a == 4) {
    
      	SetPos (18, Xy);
    
    		cout << " ┃ ┃";
    
    		SetPos (19, Xy);
    
    		cout << " ╰┳╯";
    
    		SetPos (20, Xy);
    
    		Color (What + 10);
    
    		cout << "●";
    
    		Color (5);
    
    		cout << "  ▏";
    
    	}
    
      if (a == 5) {
    
      	SetPos (18, Xy);
    
    		cout << " ┃ ┃";
    
    		SetPos (19, Xy);
    
    		cout << " ╰┳╯";
    
    		SetPos (20, Xy);
    
    		cout << " ";
    
    		Color (What + 10);
    
    		cout << "●";
    
    		Color (5);
    
    		cout << " ▏";
    
    	}
    
      if (a == 6) {
    
      	SetPos (18, Xy);
    
    		cout << " ┃ ┃";
    
    		SetPos (19, Xy);
    
    		cout << " ╰┳╯";
    
    		SetPos (20, Xy);
    
    		cout << "  ";
    
    		Color (What + 10);
    
    		cout << "●";
    
    		Color (5);
    
    		cout << " ";
    
    	}
    
      Color (0);
    
    }
    
    void Start () {
    
      char g;
    
    	Color (5);
    
    	system ("cls");
    
      SetPos (1, 1);
    
    	cout << "------- 愤 怒 的 小 鸟 -------";
    
    	Color (0);
    
      SetPos (3, 1);
    
    	cout << "空格瞄准,按X触发小鸟技能,←→移动弹弓";
    
      SetPos (5, 1);
    
    	cout << "猪猪技能自动触发,空中会有墙出现。";
    
      SetPos (7, 1);
    
    	cout << "危险值由命中率,猪的存活时间计算!";
    
      SetPos (9, 1);
    
    	cout << "危险值点满后失败!1500分通关!";
    
      SetPos (1, 20);
    
    	cout << "-------- 小 鸟 技 能 --------";
    
      SetPos (3, 20);
    
    	Color (11);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":无技能";
    
      SetPos (5, 20);
    
    	Color (12);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":分身!不同分身初速度大小相同,";
    
      SetPos(6,20);cout<<"    方向不同。";
    
      SetPos (7, 20);
    
    	Color (13);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":加速!以当前速度做匀速直线运动,";
    
      SetPos (8, 20);
    
    	cout << "     且免疫狙击猪的冲击。";
    
      SetPos (9, 20);
    
    	Color (14);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":投蛋!并获得向上速度做匀速直线";
    
      SetPos (10, 20);
    
    	cout << "     运动,快达可以穿墙。";
    
      SetPos (11, 20);
    
    	Color (15);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":爆炸!";
    
      SetPos (13, 20);
    
    	Color (16);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":回旋!开始做向左加速运动!发射";
    
      SetPos (14, 20);
    
    	cout << "     时获得双倍水平速度。";
    
      SetPos (15, 20);
    
    	Color (17);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":[被动] 弹跳力为普通鸟三倍。发射";
    
      SetPos (16, 20);
    
    	cout << "     时获得1.5倍水平、竖直速度。";
    
      SetPos (11, 1);
    
    	cout << "-------- 猪 猪 技 能 --------";
    
      SetPos (13, 2);
    
    	Color (2);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":无技能";
    
      SetPos (14, 1);
    
    	Color (8);
    
    	cout << "▁▅";
    
      SetPos (15, 2);
    
    	Color (2);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << ":防御力为普通猪三倍";
    
      SetPos (16, 2);
    
    	cout << "○";
    
      SetPos (17, 2);
    
    	cout << "│:做空中简谐运动,受死范围";
    
      SetPos (18, 2);
    
    	Color (2);
    
    	cout << "●";
    
    	Color (0);
    
    	cout << " 为普通猪两倍。";
    
      SetPos (19, 2);
    
    	cout << "  有几率跳起或发射冲击波,冲";
    
      SetPos (20, 1);
    
    	Color (2);
    
    	cout << "﹃●";
    
    	Color (0);
    
    	cout << ":开小鸟与同类,可以引爆TNT!";
    
      SetPos (18, 20);
    
    	Color (5);
    
    	cout << "按 y 开始游戏!";
    
    A:
    
    	if (kbhit ()) {
    
    		g = _getch ();
    
    	}
    
      if(g != 'y') {
    
    		goto A;
    
    	}
    
    }
    
    int main () {
    
      system ("mode con cols=79 lines=22");
    
      CONSOLE_CURSOR_INFO cursor_info = {1, 0};
    
      SetConsoleCursorInfo (GetStdHandle (STD_OUTPUT_HANDLE), &cursor_info);
    
      srand ((unsigned)time(NULL));
    
    	St:Start ();
    
    	system ("cls");
    
      memset (blt, 0, sizeof (blt));
    
    	memset (pig, 0, sizeof (pig));
    
      memset (boo, 0, sizeof (boo));
    
    	memset (m, 0, sizeof (m));
    
      T = put = K = K2 = Sle = What = Pig = Sco = 0;
    
    	pigk = scok = -1;
    
      Xy = 4;
    
    	yX = 18;
    
    	yY = 6;
    
    	Blt = 20;
    
    	Bot = 20;
    
    	Pit = 60;
    
    	Color (7);
    
      SetPos (19, 14);
    
    	cout << "■";
    
      SetPos (20, 13);
    
    	cout << " █▍";
    
    	m[19][14] = m[20][13] = m[20][14] = 1;
    
      SetPos (21, 0);
    
    	for (int i = 0; i < 39; i++) {
    
    		cout << "■";
    
    		m[21][i] = 1;
    
    	}
    
      Color (0);
    
    	What = rand () % 5 + 1;
    
      while (1) {
    
        if (Sco >= 1500) {
    
        	break;
    
    		}
    
        T++;
    
    		K = 0;
    
    		Color (0);
    
        if (Sco != scok) {
    
        	SetPos (1, 1);
    
    			cout << "分数:" << Sco << ' ';
    
    		}
    
        if (Pig != pigk) {
    
    			SetPos (3, 1);
    
    			cout << "危险值:";
    
    			int aa = min (Sco / 100, 10);
    
    			Pig += aa;
    
        	SetPos (3, 5);
    
    			if (Pig <= 2) {
    
    				Color (2);
    
    			} else if (Pig <= 4) {
    
    				Color (16);
    
    			} else if (Pig <= 6) {
    
    				Color (7);
    
    			} else if (Pig <= 9) {
    
    				Color (6);
    
    			} else if (Pig <= 12) {
    
    				Color (3);
    
    			} else if (Pig <= 15) {
    
    				Color (17);
    
    			} else {
    
    				Color (11);
    
    			}
    
        	for (int i = 1; i <= Pig; i++) {
    
        		cout << "■";
    
    			}
    
    			Color (0);
    
    			cout << ' ' << Pig;
    
    			for (int i = 1; i <= 5; i++) {
    
    				cout << " ";
    
    			}
    
        	if (Pig > 18) {
    
        		break;
    
    			}
    
    			Pig -= aa;
    
    		}
    
        scok = Sco;
    
    		pigk = Pig;
    
        if (GetAsyncKeyState (VK_LEFT)&0x8000 && Xy > 0) {
    
        	Move (-2);
    
    			Xy--;
    
    			K = 1;
    
    		}
    
        if (GetAsyncKeyState (VK_RIGHT)&0x8000 && Xy < 10) {
    
        	Move (-2);
    
    			Xy++;
    
    			K = 1;
    
    		}
    
        if (K == 1) {
    
          if (put == 0 && Sle == 0) {
    
          	Move (0);
    
    			} else {
    
    				Move (-1);
    
    			}
    
        }
    
        if (kbhit ()) {
    
          char g = _getch ();
    
          if (g == 'x' || g == 'X') {
    
            for (int i = Blt - 10; i <= Blt; i++) {
    
            	if (blt[i].go == 0 && blt[i].boom == 0 && blt[i].W != 1 && blt[i].W != 7) {
    
            		blt[i].boom = 1;
    
    	          if (blt[i].W == 2) {
    
        	        Blt++;
    
    							blt[Blt].W = 2;
    
    							blt[Blt].vy = blt[i].vy * 1.2;
    
    							blt[Blt].vx = blt[i].vx + 1;
    
          	      blt[Blt].ax = blt[i].ax;
    
    							blt[Blt].X = blt[i].X;
    
    							blt[Blt].Y = blt[i].Y;
    
    							blt[Blt].boom = 1;
    
            	    Blt++;
    
    							blt[Blt].W = 2;
    
    							blt[Blt].vy = blt[i].vy * 0.7;
    
    							blt[Blt].vx = blt[i].vx - 1;
    
              	  blt[Blt].ax = blt[i].ax;
    
    							blt[Blt].X = blt[i].X;
    
    							blt[Blt].Y = blt[i].Y;
    
    							blt[Blt].boom = 1;
    
    	          }
    
      	        if (blt[i].W == 3) {
    
      	        	blt[i].vy = fmax (blt[i].vy * 1.5, 2.5);
    
    							blt[Blt].vx++;
    
    							blt[i].ax = 0;
    
    						}
    
        	      if (blt[i].W == 4) {
    
            	    blt[i].vx = -3;
    
    							blt[i].ax = 0.1;
    
    							Blt++;
    
    							blt[Blt].boom = 1;
    
    							blt[Blt].W = 10;
    
    	            blt[Blt].X = blt[i].X;
    
    							blt[Blt].Y = blt[i].Y;
    
    							blt[Blt].ax = blt[i].ax;
    
    							blt[Blt].vx = 1;
    
      	        }
    
        	      if (blt[i].W == 5) {
    
        	      	Bot++;
    
    							boo[Bot].X = blt[i].X;
    
    							boo[Bot].Y = blt[i].Y;
    
    							boo[Bot].S = 1;
    
    							boo[Bot].mS = 5;
    
    							blt[i].go = 1;
    
    						}
    
          	    if (blt[i].W == 6) {
    
          	    	blt[i].ay = -1;
    
    							blt[i].ax = 0.3;
    
    							blt[i].vx = min (blt[i].vx / 2, (float)0);
    
    						}
    
            	  break;
    
    					}
    
    				}
    
          }
    
        }
    
        if (GetAsyncKeyState (' ')&0x8000 && K == 0 && Sle == 0) {
    
          if (put <= 5) {
    
          	Move (1);
    
    				yX = 18;
    
    				yY = Xy + 1;
    
    			} else if (put <= 20) {
    
    				Move (2);
    
    				yX = 18;
    
    				yY = Xy;
    
    			} else if (put <= 40) {
    
    				Move (3);
    
    				yX = 19;
    
    				yY = Xy;
    
    			} else if (put <= 60) {
    
    				Move (4);
    
    				yX = 20;
    
    				yY = Xy;
    
    			} else if (put <= 80) {
    
          	Move (5);
    
    				yX = 20;
    
    				yY = Xy + 1;
    
    			} else {
    
    				Move (6);
    
    				yX = 20;
    
    				yY = Xy + 2;
    
    			}
    
          if (put == 0) {
    
          	K2 = 1;
    
    			}
    
    			if (put == 90) {
    
    				K2 = -1;
    
    			}
    
          if (K2 == 1) {
    
          	put += min (rand () % 7 + 1, 90 - put);
    
    			}
    
          if (K2 == -1) {
    
          	put-=min(rand()%7+1,put);
    
    			}
    
          Cout (1, 17, Xy + 2);
    
        }
    
        if ((!(GetAsyncKeyState (' ')&0x8000) && (put != 0)) || (put != 0 && K == 1)) {
    
        	Move (-1);
    
    			Creat (1, put);
    
    			put = 0;
    
    			yX = 18;
    
    			yY = 5;
    
    			Sle = 1;
    
    			What = rand () % 7 + 1;
    
    			Creat (-1, -1);
    
    			Sco = max (Sco - 5, 0);
    
    		}
    
        for (int i = Blt - 10; i <= Blt; i++) {
    
        	if (blt[i].go == 0) {
    
        		Go (i);
    
    			}
    
    		}
    
        for (int i = Bot - 10; i <= Bot; i++) {
    
        	if (boo[i].go == 0) {
    
        		Boom (i);
    
    				Cout (2, 0, 0);
    
    			}
    
    		}
    
        for (int i = Pit - 50; i <= Pit; i++) {
    
        	if (pig[i].go == 0) {
    
        		Kill (i);
    
    			}
    
    		}
    
        if (Sle != 0) {
    
        	Move (-1);
    
    		} else if (put == 0) {
    
    			Move (0);
    
    		}
    
        if (T % 300 == 0) {
    
        	system ("cls");
    
    			pigk = scok = -1;
    
    		}
    
        if (T % 100 == 0) {
    
          Color (7);
    
          for (int i = 0; i <= 18; i++) {
    
          	for (int j = 0; j <= 40; j++) {
    
          		if (m[i][j] == 1 && T % 100 == 0) {
    
          			SetPos (i, j);
    
    						cout << "■";
    
    					}
    
    				}
    
    			}
    
          SetPos (19, 14);
    
    			cout << "■";
    
    			SetPos (20, 13);
    
    			cout <<" █▍";
    
          SetPos (21, 0);
    
    			for (int i = 0; i < 39; i++) {
    
    				cout << "■";
    
    				Color (0);
    
    			}
    
        }
    
        if (T % min (50, (2000 - Sco) / 30) == 0) {
    
        	Pig++;
    
    			Creat (0, -1);
    
    		}
    
        Sleep (15);
    
      }
    
      if (Sco < 500) {
    
    		if (MessageBox (NULL, "很遗憾,您输了,您还想再来一次吗?", "温馨提示", MB_YESNO) == IDYES) {
    
    			goto St;
    
    		} else {
    
    			return 0;
    
    		}
    
    	} else {
    
    		if (MessageBox (NULL, "恭喜您赢了!您还想再来一次吗?", "温馨提示", MB_YESNO) == IDYES) {
    
    			goto St;
    
    		} else {
    
    			return 0;
    
    		}
    
    	}
    
      return 0;
    
    }
    
    #include<bits/stdc++.h>
    #include<windows.h>
    #include<stdio.h>
    #include<conio.h>
    #include<time.h>
    using namespace std;
    float X,Y;int Left=1,Right=30,Up=1,Down=20;bool Medal[22],Fr[6],Cheat=0;
    int Clocknum,T,Score,Combo,FruitNum,Jump_2,SS,FT[11],FC,FCT,FCF,FO,FFFt,FXia,FUp;
    int up,dn,lf,rt,sy;float Vx,Vy;int Walk,Jump,Rush;
    int Attention,Jumplock,AttTime,Dnlock,Lflock,Rtlock;
    int RushT1,RushT2,RushT3;float Rush_Vx,Rush_Vy,Rush_x0,Rush_y0,Rush_X,Rush_Y;
    const float G=0.038,t0=0.2,t00=0.8,t000=0.3;//时间参量 
    struct node
    {int Type;
        float X,Y,R,x0,y0,x1,y1;
        float Vx,Vy;
        int Life,color,brounce,half,Angle,AngleSpeed,t;
    }F[100001];int l,m;
    int N[100][45],M[100][45];
    
    float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
    void Color(int a){if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==-10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN);if(a==-13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_BLUE);if(a==-14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED);if(a==-15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN);if(a==-16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_BLUE);if(a==-17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
    if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN);if(a==-3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==-4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);if(a==-6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_BLUE);if(a==-7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
    }
    int To_int(float a){return int(a+0.5);}float Abs(float a){return (a>=0)?a:-a;}
    void Setpos(float x,float y){COORD pos;pos.X=To_int(x)*2+1,pos.Y=To_int(y)+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
    void Put_Frame(){Color(0);int x=Right-Left+1,y=Down-Up+1;for(int i=0;i<=x+1;i++)for(int j=0;j<=y+1;j++){if(i==0||j==0||i==x+1||j==y+1) Setpos(i,j),printf("[]");}}
    void Clear(float x,float y){
    //	if(RushT3>0) Color(0);else 
    	Color(-Abs(N[To_int(x)*2][To_int(y)]));Setpos(x,y),printf("  ");
    	M[To_int(x*2)][To_int(y)]=-1;
    }void Medal_();
    void Put_Man(float x1,float y1){
    	int x=To_int(x1);int y=To_int(y1);
    	if(y<Up||x<Left||x>Right||y>Down) return;
    	if(Rush==1||AttTime>0||Attention>0) Color(5);
    	else Color(1);
    	Setpos(x1,y1),printf("●");
    }
    void Cir(float r,char a){//不要改 ,冲刺动画1 
    	int num=7,Angle=r*10;if(r<=2) num=4;
    	int next=360/num;
    	for(int i=Angle;i<360+Angle;i+=next)
    	{
    		float x,y;
    		x=X+Cos(i)*r;
    		y=Y+Sin(i)*r;
    		if(y<Up||x<Left||x>Right||y>Down) continue;
    		if(a==' '&&N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(0),printf(" ");
    		else if(N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(-14),printf(" ");
    	}
    }
    void Cir2(int k,float r,char a){//水果整圆 
    	int col=F[k].color;
    	float x0=F[k].X,y0=F[k].Y,R=F[k].R;
    	for(int i=y0-R;i<=y0+R;i++){float Ax=sqrt(R*R-(i-y0)*(i-y0));//cout<<i<<' '<<x0-Ax+0.5<<' '<<x0+Ax<<' ';
    	for(float k=x0-Ax+0.5;k<x0+Ax;k+=0.5)
    		if(a==' ') N[To_int(k*2)][i]=0; else N[To_int(k*2)][i]=col;
    	}
    	int num=24,Angle=0;if(r<=1) num=4;else if(r<=3) num=12;
    	int next=360/num;
    	for(int i=Angle;i<360+Angle;i+=next)
    	{
    		float x,y;
    		x=F[k].X+Cos(i)*r;
    		y=F[k].Y+Sin(i)*r;
    		if(y<Up||x<Left||x>Right||y>Down) continue;
    		else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col+10;}
    	}for(int i=0;i<360;i+=90)
    	{
    		float x,y;
    		x=F[k].X+Cos(i)*r;
    		y=F[k].Y+Sin(i)*r;
    		if(y<Up||x<Left||x>Right||y>Down) continue;
    		else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col+10;}
    	}
    }
    void Cir3(int xx,int yy,float r,char a){//不要改 冲刺动画2
    	r++;
    	int num=8,Angle=r*10-17;if(r<=2) num=4;
    	int next=360/num;
    	for(int i=Angle;i<360+Angle;i+=next)
    	{
    		float x,y;
    		x=xx+Cos(i)*r;
    		y=yy+Sin(i)*r;
    		if(y<Up||x<Left||x>Right||y>Down) continue;
    		if(a==' '&&N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(0),printf(" ");
    		else if(N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(-14),printf(" ");
    	}
    }
    void Cir4(int k,float r,char a){//半圆 
    	int col=F[k].color;
    	int num=24,Angle=F[k].Angle;if(r<=1) num=4;else if(r<=3) num=12;
    	int next=360/num;
    	for(int i=Angle;i<180+Angle;i+=next)
    	{
    		float x,y;
    		x=F[k].X+Cos(i)*r;
    		y=F[k].Y+Sin(i)*r;
    		if(y<Up||x<Left||x>Right||y>Down) continue;
    		else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col;}
    	}bool left=0;
    	float x0=F[k].X+Cos(Angle)*r    ,y0=F[k].Y+Sin(Angle)*r;
    	float x1=F[k].X+Cos(Angle+180)*r,y1=F[k].Y+Sin(Angle+180)*r;
        float Ax=x1-x0,Ay=y1-y0,Dis=sqrt(Ax*Ax+Ay*Ay);
        if(Ay<0) swap(x1,x0),swap(y1,y0),Ax*=-1,Ay*=-1;
    	if(Ax<0) left=1;
        float ax=Ax/Dis*1.0,ay=Ay/Dis*1.0;
    	float i=x0,j=y0;
        while(j<=y1&&((i<=x1&&left==0)||(i>=x1&&left==1))){
    		if(j<Up||i<Left||i>Right||j>Down) int nil=0;
    		else {if(a==' ') N[To_int(i*2)][To_int(j)]=0; else N[To_int(i*2)][To_int(j)]=col;}
            i+=ax;j+=ay;
        }for(int i=0;i<360;i+=90)
    	{
    		if(i<Angle||i>Angle+180) continue; 
    		float x,y;
    		x=F[k].X+Cos(i)*r;
    		y=F[k].Y+Sin(i)*r;
    		if(y<Up||x<Left||x>Right||y>Down) continue;
    		else  {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col;}
    	}
    }
    void Line(float x0,float y0,float x1,float y1,char a,int col){bool left=0;
    if(col==-5) m++,F[m].Type=-1,F[m].Life=1,F[m].t=0,F[m].x0=x0,F[m].y0=y0,F[m].x1=x1,F[m].y1=y1;
        float Ax=x1-x0,Ay=y1-y0,Dis=sqrt(Ax*Ax+Ay*Ay);
        if(Ay<0) swap(x1,x0),swap(y1,y0),Ax*=-1,Ay*=-1;
    	if(Ax<0) left=1;
        float ax=Ax/Dis*0.9,ay=Ay/Dis*0.9;
    	float i=x0,j=y0;
        while(j<=y1&&((i<=x1&&left==0)||(i>=x1&&left==1))){
    		if(j<Up||i<Left||i>Right||j>Down) int nil=0;
    		else Setpos(i,j),Color(col),printf("  ");
            i+=ax;j+=ay;
        }Color(0);
    }
    void Print_Fruit(int i,char a){
    	if(F[i].half==1) Cir4(i,F[i].R,a);
    	else Cir2(i,F[i].R,a);
    }
    void Go(){
    		if(Y<=Up) Y=Up,AttTime=0;
    		if(Y>=Down){FC=0;FCF=0;if(clock()-FCT>10000&&Medal[20]==0&&T>10000) Medal[20]=1,Medal_(); FCT=clock();
    			if(Jump>=1) Vy=0,Vx/=2,Y=Down,Jump=0,Walk=1;//触地 
    		}
    		if(X<=Left) X=Left,Vx=0;if(X>=Right) X=Right,Vx=0;
    	
    	int Num=up+dn+lf+rt;
    	
    	if(RushT3>0) RushT3--;
    	if(RushT2>0){
    		if(Rush==2&&RushT2<4) Cir3(Rush_X,Rush_Y,RushT2,' ');
    		RushT2--;
    		if(RushT2==0) {Rush=0,RushT3=3,Vx=(Vx+Rush_Vx*t00)/3.0,Vy=(Vy+Rush_Vy*t00)/3.0,Line(X,Y,Rush_x0,Rush_y0,' ',-5),Color(0);if(Y<=Up) RushT3=0,AttTime=0,Vy=max(0.1,(double)Vy);FC++;FO++;if(FC>=8&&Medal[16]==0) Medal[16]=1,Medal_();if(FO>=10&&Medal[18]==0) Medal[18]=1,Medal_();}
    		if(Rush==2) Cir3(Rush_X,Rush_Y,RushT2,'|');
    	}
    	if(AttTime>0){AttTime--;
    		if(Num!=0){
    			if(up==1&&Jumplock!=0) int nil=0;
    			else if(dn==1&&Dnlock!=0) int nil=0;
    			else if(Num==1&&lf==1&&Lflock!=0) int nil=0;
    			else if(Num==1&&rt==1&&Rtlock!=0) int nil=0;
    			else {Attention=0;AttTime=0;
    			if(RushT1==0&&Rush==0) RushT1=6;
    			}
    		}
    	}
    	if(RushT1!=0) {
    		if(RushT1<6) Cir(RushT1,' ');
    		RushT1--;
    		if(RushT1==0){//开始冲刺 
    			int non=0;//non很重要 
    			if(Num==1){
    				if(up==1&&Jumplock==0) Rush_Vx=0,Rush_Vy=-1.3,Jumplock=1;
    				else if(lf==1&&Lflock==0) Rush_Vx=-1.8,Rush_Vy=0,Lflock=1;
    				else if(rt==1&&Rtlock==0) Rush_Vx=1.8,Rush_Vy=0,Rtlock=1;
    				else if(dn==1&&Dnlock==0) Rush_Vx=0,Rush_Vy=3,Dnlock=1;
    				else non=1;
    			}
    			else if(Num==2){
    				if(up==1&&lf==1&&Jumplock==0) Rush_Vx=-1.5,Rush_Vy=-1.5,Jumplock=1;
    				else if(up==1&&rt==1&&Jumplock==0) Rush_Vx=1.5,Rush_Vy=-1.5,Jumplock=1;
    				else if(dn==1&&lf==1&&Dnlock==0) Rush_Vx=-1.5,Rush_Vy=1.5,Dnlock=1;
    				else if(dn==1&&rt==1&&Dnlock==0) Rush_Vx=1.5,Rush_Vy=1.5,Dnlock=1;
    				else non=1;
    			}
    			else non=1;
    			if(non==0) {Rush_x0=X,Rush_y0=Y,Rush=1,RushT2=4;}
    		}
    		else Cir(RushT1,'|');
    	}
    	if(Walk==1&&Jump==0){//正在触地 
    		FC=0;FCF=0;if(clock()-FCT>10000&&Medal[20]==0&&T>10000) Medal[20]=1,Medal_(); FCT=clock();
    		if(Abs(Vx)<1.95*t0) Attention=0;
    		if(Num==0) Vx*=0.6;//摩擦 
    		if(Num==1||(Num==2&&up==1)){
    			if(lf==1){
    				if(Vx<=2*t0&&Vx>-0.8*t0) Vx-=0.5*t0;
    				else if(Vx<=-0.8*t0&&Vx>-2*t0) Vx-=0.1*t0;
    				else if(Vx<=-2*t0){
    					Vx=-2*t0,Attention=1;
    					if(up==1) Rush_x0=X,Rush_y0=Y,Rush_X=X-1,Rush_Y=Y-2,Rush=2,RushT2=4,Rush_Vx=-1.5,Rush_Vy=-1.5,Jumplock=1; 
    				}
    			}
    			if(rt==1){
    				if(Vx<=0.8*t0&&Vx>-2*t0) Vx+=0.5*t0;
    				else if(Vx>=0.8*t0&&Vx<2*t0) Vx+=0.1*t0;
    				else if(Vx>=2*t0){
    					Vx=2*t0,Attention=1;
    					if(up==1) Rush_x0=X,Rush_y0=Y,Rush_X=X+1,Rush_Y=Y-2,Rush=2,RushT2=4,Rush_Vx=1.5,Rush_Vy=-1.5,Jumplock=1;
    				}
    			}
    			if(up==1){
    				Vy=-0.6;Walk=0;Jump=1;Jumplock=1;
    			}
    		}
    	}
    	if(Jump>=1&&Rush==0){//普通滞空 
    	int num=up+dn;
    		if(Abs(Vy)<=0.05) Attention=1,AttTime=7;else Attention=0;
    		if(num==1&&up==1&&Jump==1&&Attention==0&&AttTime==0&&Jumplock==0&&Jump_2==1){
    			if(Vy>-0.2) Vy=-0.4;
    			if(Vy<=-0.2) Vy-=0.2;
    			Jump=2;//二段跳 
    		}
    		if(num==1&&dn==1){
    			Vy+=0.1; 
    		}
    		Vy+=G;
    	}
    	Clear(X,Y);
    	if(RushT1>0) int nil=0;
    	else if(Rush==1) X+=Rush_Vx*t00,Y+=Rush_Vy*t00;
    	else X+=Vx,Y+=Vy;
    	
    	if(Y<Up||X<Left||X>Right||Y>Down){
    		if(Rush>0||RushT3>0)
    		{
    			if((X<Left||X>Right)&&Rush_Vy==0) Vy=-0.2,Vx=0;
    		}
    	}
    	if(Y<=Up) Y=Up;if(X<=Left) X=Left;if(X>=Right) X=Right;if(Y>=Down) Y=Down;
    	Put_Man(X,Y);
    }
    void CreatF(){
    if(clock()-Clocknum>=25) return;
    if(FruitNum>=5) return;
    	m++;F[m].Life=2;F[m].brounce=1;F[m].half=0;F[m].t=0; 
    	int R=rand()%5+1;F[m].Type=R;
    	if(R==1) F[m].R=3.45,F[m].color=2;//="Watermelon";
    	if(R==2) F[m].R=1.85,F[m].color=4;//="Strawberry";
    	if(R==3) F[m].R=2.0,F[m].color=5;//="Orange    ";
    	if(R==4) F[m].R=2.45,F[m].color=3;//="Grapes    ";
    	if(R==5) F[m].R=1.85,F[m].color=6;//="Blueberry ";
    	int r=rand()%6+1;
    	if(r<=6) {//上下方 
    		F[m].X=Left+(rand()%100)*(Right-Left)/100.0;
    		F[m].Vx=1.0-(rand()%100)*2/100.0;
    		if(r>1) F[m].Y=Down-1,F[m].Vy=-1-(rand()%100)*1/100.0;
    		else F[m].Y=Up+1,F[m].Vy=(rand()%100)*1/100.0;
    		F[m].Angle=rand()%360,F[m].AngleSpeed=rand()%20+5;
    		if(r>1) F[m].Y+=F[m].R;else F[m].Y-=F[m].R;
    	}
    }
    void Move(int Stage){//移动的状态调整,准备移步至Go函数 
    	float x,y,r;FruitNum=0;
    	for(int i=l;i<=m;i++){
    		
    		if(i==l&&F[i].Life==0){l++;if(l>m) l=1,m=0;continue;}
    		else if(F[i].Life==0) {continue;}
    		if(F[i].Type==-1){F[i].t++;
    			if(F[i].t==3) Line(F[i].x0+Rush_Vx,F[i].y0+Rush_Vy,F[i].x1+Rush_Vx,F[i].y1+Rush_Vy,' ',-1);
    			if(F[i].t>=4) Line(F[i].x0,F[i].y0,F[i].x1,F[i].y1,' ',0),Line(F[i].x0+Rush_Vx,F[i].y0+Rush_Vy,F[i].x1+Rush_Vx,F[i].y1+Rush_Vy,' ',0),F[i].Life=0;
    		continue;}
    		if(F[i].Life==2){F[i].t++;
    			if(F[i].t>10) {Color(0);x=F[i].X,y=(F[i].Y>=Down)?Down:Up;
    			 		M[To_int(x*2)][To_int(y)]=-1;
    				F[i].Life=1;}
    			else  Color((F[i].t%6<=2)?-4:-5),Setpos(F[i].X,(F[i].Y>=Down)?Down:Up),cout<<"!!";
    			Color(0);
    			continue;
    		}
    		Print_Fruit(i,' ');
    		if(F[i].half==1) F[i].R*=0.96;
    		if(F[i].half==1&&F[i].t>=20){F[i].Life=0;continue;}
    		if(F[i].Type>=1&&F[i].Type<=5) FruitNum++;
    		
    		x=F[i].X,y=F[i].Y,r=F[i].R;
    		float D=sqrt((x-X)*(x-X)+(y-Y)*(y-Y)),D2=sqrt((Rush_x0-x)*(Rush_x0-x)+(Rush_y0-y)*(Rush_y0-y));
    		if((D<=r*1.0||D2<=r*1.0)&&(Rush!=0||RushT3!=0)&&F[i].half==0) {
    		Combo++,Score+=10*Combo;FO=0;
    		if(Medal[8]==0&&Rush_Vx==0&&Rush_Vy>0) FXia++;if(FXia>=30) Medal[8]=1,Medal_(); if(Medal[14]==0&&Rush_Vx==0&&Rush_Vy<0) FUp++;if(FUp>=40) Medal[14]=1,Medal_(); 
    		if(Medal[3]==0) Medal[3]=1,Medal_();if(Fr[F[i].Type]==0) {Fr[F[i].Type]=1;if(Fr[1]+Fr[2]+Fr[3]+Fr[4]+Fr[5]==5) Medal[4]=1,Medal_();}if(Combo>=15&&Medal[5]==0) Medal[5]=1,Medal_();if(Combo>=40&&Medal[17]==0) Medal[17]=1,Medal_();if(Score==520&&Medal[6]==0) Medal[6]=1,Medal_();
    		if(Score>=1000&&Medal[15]==0) Medal[15]=1,Medal_();if(Score>=10000&&Medal[19]==0) Medal[19]=1,Medal_();if(Score>=100000&&Medal[21]==0) Medal[21]=1,Medal_();
    		FCF++;if(FCF>=5&&Medal[9]==0) Medal[9]=1,Medal_();if(FCF>=10&&Medal[12]==0) Medal[12]=1,Medal_();
    			if(F[i].Y<=Up&&Medal[13]==0) Medal[13]=1,Medal_(); if(F[i].Y>=Down&&Medal[7]==0) Medal[7]=1,Medal_();if(Medal[10]==0) {FFFt++;if(FFFt>10) FFFt-=10;FT[FFFt]=clock();int Kkk=5000;for(int kk=1;kk<=10;kk++) Kkk=max(Kkk,(int)(clock()-FT[kk]));if(Kkk<5000) Medal[10]=1,Medal_();} 
    			
    			F[i].Life=0;
    			for(int tt=1;tt<=3;tt++){
    			if(tt==1) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.6+(rand()%10+10)/20.0,F[m].Life=1,F[m].Type=6,F[m].color=4,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
    			if(tt==2) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.6+(rand()%10+10)/20.0,F[m].Life=1,F[m].Type=6,F[m].color=F[i].color,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
    			if(tt==3) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.4,F[m].Life=1,F[m].Type=F[i].Type,F[m].color=F[i].color+10,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
    			if(Rush_Vx!=0&&Rush_Vy==0){//横切 
    				int turn=(Rush_Vx>0)?1:-1;
    				F[m-1].Angle=180,F[m-1].AngleSpeed=turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+turn*(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.05-1;//上 
    				F[m].Angle=0,F[m].AngleSpeed=turn*(-5-rand()%10),F[m].Vx = F[i].Vx+turn*(rand()%10+10)*0.1,F[m].Vy = F[i].Vy+(rand()%10+10)*0.05;//下 
    			}else if(Rush_Vy!=0&&Rush_Vx==0){//竖切 
    				int turn=(Rush_Vy>0)?1:-1;
    				F[m-1].Angle=270,F[m-1].AngleSpeed=turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy+(rand()%10+10)*0.1*turn-0.5;//→ 
    				F[m].Angle=90,F[m].AngleSpeed=turn*(-5-rand()%10),F[m].Vx = F[i].Vx-(rand()%10+10)*0.1,F[m].Vy = F[i].Vy+(rand()%10+10)*0.1*turn-0.5;//左 
    			}else{
    				if(Rush_Vy*Rush_Vx<0){int turn=(Rush_X<0)?1:-1; //右上 
    					F[m-1].Angle=135,F[m-1].AngleSpeed=-turn*(5+rand()%10),F[m-1].Vx=F[i].Vx-(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.04-1;//上 
    					F[m].Angle=315,F[m].AngleSpeed=turn*(5+rand()%10),F[m].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m].Vy=F[i].Vy+(rand()%10+10)*0.04;//下 
    				} 
    				if(Rush_Vy*Rush_Vx>0){int turn=(Rush_X<0)?1:-1;//左上 
    					F[m-1].Angle=225,F[m-1].AngleSpeed=-turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.04-1;//上 
    					F[m].Angle=45,F[m].AngleSpeed=turn*(5+rand()%10),F[m].Vx=F[i].Vx-(rand()%10+10)*0.1,F[m].Vy=F[i].Vy+(rand()%10+10)*0.04;//下 
    				}
    			}if(tt<=1) F[m-1].Vx*=1.2,F[m-1].Vy*=1.2,F[m].Vx*=1.2,F[m].Vy*=1.2;
    			}
    			continue;
    		}
    		F[i].t++;
    		F[i].Angle+=F[i].AngleSpeed;
    		if(F[i].Angle>=360) F[i].Angle-=360;
    		if(F[i].Angle<0) F[i].Angle+=360;
    		
    		F[i].X+=F[i].Vx*t000;F[i].Y+=F[i].Vy*t000;
    		x=F[i].X,y=F[i].Y;
    		
    		if(y+F[i].R<Up||y-F[i].R>Down){
    			if(F[i].t<=5) {F[i].Vy*=-1;
    			if(y+F[i].R<Up) F[i].Y=-F[i].R+Up;
    			if(y-F[i].R>Down) F[i].Y=F[i].R+Down;}
    		
    		F[i].Life=0;continue;}
    		if(x<Left||x>Right){
    			if(F[i].brounce>0||F[i].t<=5){if(F[i].brounce>0) F[i].brounce--;F[i].Vx*=-1;
    				if(x<Left) F[i].X=Left;
    				if(x>Right) F[i].X=Right;
    			}
    			else {F[i].Life=0;continue;}
    		}
    		if(Stage==0||F[i].Type<=0||F[i].Type>=5) F[i].Vy+=G;
    		
    		Print_Fruit(i,'*');
    	}
    }
    void Print(){
    	for(int i=Left*2;i<=Right*2;i++)
    	for(int j=Up;j<=Down;j++){
    		if(N[i][j]!=M[i][j]){
    			if(N[i][j]==0) Color(0),Setpos(i/2.0,j),printf("  ");
    			else Color(-Abs(N[i][j])),Setpos(i/2.0,j),printf("  ");
    		}
    		M[i][j]=N[i][j];
    	}memset(N,0,sizeof(N));Color(0);
    }
    void Slow(char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;if(!kbhit()) Sleep(20);}}
    int speed;
    void Start(){Color(1);SS=1;
    	Setpos(2,2),cout<<"水果忍胎 0.9 ";
    	Setpos(10,3),cout<<"作者:胎神大大";
    	Setpos(2,6),cout<<"按 x 进入教学模式,按 y 直接开始游戏!";
    	Setpos(2,8),cout<<"除了封面其他的都做好了qwq,但是做封面好麻烦所以说不想做直接发布了   我这边用的 Win11 输出的字符画很流畅,不知道你们电脑会不会有什么黑点阿残影阿输出错误之类的,总之这个游戏玩起来确实蛮爽的!大家加油,看看哪个先点满成就哈(万一有 BUG 呢是吧,毕竟有些成就死活打不出来...另外因为有成就所以说顺便把存档也做了,大家放心打)";
    	Setpos(1,20),cout<<"你可根据电脑性能重新选择画面流畅度:默认为 均衡 流畅度,按 q 调为低流畅,按 w 调为中低流畅,按 e 调为极高流畅 (盲目调高流畅度会导致画面卡顿)";speed=4;
    	A:char e=_getch();if(e=='y') return;else if(e=='x') int nil=0;else if(e=='q') {speed=10;goto A;}else if(e=='w') {speed=4;goto A;}else if (e=='e') {speed=2;goto A;}else goto A;
    	int Stage=0,StageY=0,StageT=0;
    	system("cls");memset(N,0,sizeof(N));memset(M,0,sizeof(M));
    	Put_Frame();
    	T=0;Clocknum=0;X=2;Y=1;Vx=Vy=0;Jump=1;Put_Man(X,Y);//初始状态掉落 
    	memset(F,0,sizeof(F));l=m=0;Score=Combo=0;
        while(1) if(clock()-Clocknum>=25)
        {T++;
        	Clocknum=clock();
        	up=dn=lf=rt=0;
            if(GetAsyncKeyState(VK_UP)&0x8000) up=1;else Jumplock=0; 
            if(GetAsyncKeyState(VK_DOWN)&0x8000) dn=1;else Dnlock=0; 
            if(GetAsyncKeyState(VK_LEFT)&0x8000) lf=1;else Lflock=0; 
            if(GetAsyncKeyState(VK_RIGHT)&0x8000) rt=1;else Rtlock=0; 
            if(kbhit()) {char g=_getch();if(g==' ') Sleep(100),Setpos(16,3),sy++,Color(0),system("pause");if(g=='y'&&Stage>=1) StageY=1;if(g=='x'&&Stage==2) Jump_2=1,Setpos(26,26),Color(5),cout<<"开";}
            if(sy>=1) Setpos(16,3),cout<<"                           ",sy=0;
            
            if(Stage==0&&StageT==0){
            	Setpos(2,22),Color(0),Slow("欢迎来到 忍者神胎 教学关卡");Sleep(500);
            	Setpos(2,24),Color(0),Slow("本游戏只有↑↓→←四种按键操作,想必是十分简单的,但又有很大的发挥空间!");Sleep(500);
            	Setpos(2,26),Color(0),Slow("按下↑↓→←进行移动。注:空中按 ↓ 有加速下落的效果");
    			StageT=T;	
    		}
    		if(Stage==0&&T-StageT>=100)//5s
    		{Stage++;
            	Setpos(2,22),Color(0),printf("                           ");
            	Setpos(2,24),Color(0),printf("                                                                        ");	
            	Setpos(2,26),Color(0),printf("                                                                ");
            	m++,F[m].Angle=0,F[m].AngleSpeed=0,F[m].color=2,F[m].half=0,F[m].Life=1,F[m].R=3.45,F[m].t=0,F[m].Type=1,F[m].Vx=F[m].Vy=0,F[m].X=16,F[m].Y=13;Print();
            	Setpos(2,22),Color(0),Slow("按↑跳起后,立刻在空中重新  长按 方向键 可以进行挥砍!来试试刀法!");
            	Setpos(2,24),Color(0),Slow("按 y 开启下一阶段教学");
    		}
    		if(Stage==1&&F[1].Life==1) StageT=T;
    		if(Stage==1&&F[1].Life==0&&T-StageT>=20){
    			StageT=T;
            	l=0,m++,F[1].Angle=45,F[1].AngleSpeed=0,F[1].color=2,F[1].half=0,F[1].Life=1,F[1].R=3.45,F[1].t=0,F[1].Type=1,F[1].Vx=F[1].Vy=0,F[1].X=16,F[1].Y=13;
    		}
            if(StageY==1&&Stage==1){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
            	Setpos(2,22),Color(0);printf("                                                               ");
            	Setpos(2,24),Color(0);printf("                      "); 
            	l=0;for(int tt=1;tt<=3;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0,F[tt].X=16,F[tt].Y=19-tt*5;
            	Print();Setpos(2,22),Color(0),Slow("接下来练习连招!");
            	Setpos(2,24),Color(0),Slow("在空中可以连续按  ↑ 进行多段跳跃,如果你不习惯,可以按 x 开启二段跳能力(PS:连招的秘诀是把握节奏)");
            	Setpos(2,26),Color(0),Slow("按 y 开启下一阶段教学      ( 二段跳能力状态:       )");
            	Setpos(26,26),Color(5);cout<<"关";
    		}
    		if(Stage==2&&F[1].Life+F[2].Life+F[3].Life==3) StageT=T;
    		if(Stage==2&&F[1].Life+F[2].Life+F[3].Life<3&&T-StageT>=50){
    			StageT=T;
            	l=0;for(int tt=1;tt<=3;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0,F[tt].X=16,F[tt].Y=19-tt*5;
            }
            if(StageY==1&&Stage==2){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
            	Setpos(2,22),Color(0),printf("                 ");
            	Setpos(2,24),Color(0),printf("                                                                                                  ");
            	Setpos(2,26),Color(0),printf("                                                          ");
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=9,F[1].Y=15.5;F[2].X=17.3,F[2].Y=9.4;F[3].X=9.6,F[3].Y=3.5;F[4].X=17,F[4].Y=1;
    
            	Print();Setpos(2,22),Color(0);Slow("空中折线跳:先跳起,再在空中向上连续左右冲刺,是一种杀伤面积广,上升距离大的连招");
            	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关四个果子可一个连招砍完,试试精细操作!)"); 
    		}
    		if(Stage==3&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
    		if(Stage==3&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
    			StageT=T;
            
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=9,F[1].Y=15.5;F[2].X=17.3,F[2].Y=9.4;F[3].X=9.6,F[3].Y=3.5;F[4].X=17,F[4].Y=1;}
            if(StageY==1&&Stage==3){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
            	Setpos(2,22),Color(0),printf("                                                                                         ");
            	Setpos(2,24),Color(0),printf("                                                                            ");
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=15.4,F[1].Y=15.5;F[2].X=7.3,F[2].Y=9.5;F[3].X=15.4,F[3].Y=3.6;F[4].X=15.4,F[4].Y=8.5;
    
            	Print();Setpos(2,22),Color(0);Slow("三角围杀:先使用折线跳跳至目标上方,再向下瞄准,冲刺切除下方水果");
            	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学"); 
    		}
    		if(Stage==4&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
    		if(Stage==4&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
    			StageT=T;
            
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=15.4,F[1].Y=15.5;F[2].X=7.3,F[2].Y=9.5;F[3].X=15.4,F[3].Y=3.6;F[4].X=15.4,F[4].Y=8.5;}
            if(StageY==1&&Stage==4){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
            	Setpos(2,22),Color(0),printf("                                                                              ");
            	Setpos(2,24),Color(0),printf("                                                                            ");
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=4.7,F[1].Y=15.5;F[2].X=1,F[2].Y=15.5;F[3].X=1,F[3].Y=11;F[4].X=10,F[4].Y=5;
    
            	Print();Setpos(2,22),Color(0);Slow("撞墙跳:利用平扑撞墙会产生一个小向上速度的特性,将本应断掉的连招接续起来");
            	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关接连招砍绿果、紫果、红果)"); 
    		}
    		if(Stage==5&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
    		if(Stage==5&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
    			StageT=T;
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
            	F[1].X=4.7,F[1].Y=15.5;F[2].X=1,F[2].Y=15.5;F[3].X=1,F[3].Y=11;F[4].X=10,F[4].Y=5;}
            if(StageY==1&&Stage==5){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
            	Setpos(2,22),Color(0),printf("                                                                                ");
            	Setpos(2,24),Color(0),printf("                                                                            ");
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=18,F[1].Y=15;F[2].X=16,F[2].Y=17;F[3].X=24,F[3].Y=13;F[4].X=24,F[4].Y=8;
    
            	Print();Setpos(2,22),Color(0);Slow("平地起冲:长按 → 加速至变黄,立即再按下  ↑ 可直接起冲,接连招");
            	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关接连招砍紫果、红果)"); 
    		}
    		if(Stage==6&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
    		if(Stage==6&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
    			StageT=T;
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
            	F[1].X=18,F[1].Y=15;F[2].X=16,F[2].Y=17;F[3].X=24,F[3].Y=13;F[4].X=24,F[4].Y=8;}
            if(StageY==1&&Stage==6){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
            	Setpos(2,22),Color(0),printf("                                                                              ");
            	Setpos(2,24),Color(0),printf("                                                                            ");
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=5,F[1].Y=16;F[2].X=10,F[2].Y=19;F[3].X=12,F[3].Y=19;F[4].X=21,F[4].Y=15;
    
            	Print();Setpos(2,22),Color(0);Slow("凌波微步: 跳起在空中向右下冲击地面,不要松开 →以获得极大的速度,然后重新按下  ↑ ,紧接平地起冲!");
            	Setpos(2,24),Color(0);Slow("按 y 完成教学关卡 (本关蓝果下冲,紫果起跳,接连招砍红果)"); 
    		}
    		if(Stage==7&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
    		if(Stage==7&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
    			StageT=T;
            	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
    			F[1].X=5,F[1].Y=16;F[2].X=10,F[2].Y=19;F[3].X=12,F[3].Y=19;F[4].X=21,F[4].Y=15;
            }
            if(StageY==1&&Stage==7) return;
            
    		if(RushT1==0) Move(1);
            Go();
    		if(RushT1==0&&T%speed==0) Print();
    }
    }
    void Read(){
        ifstream in("水果忍胎存档.in");int Xx=0,Yy;
        for(int i=0;i<=21;i++) in>>Medal[i],Xx+=345*(2*i+1)*Medal[i];
        in>>Yy>>Score>>Combo>>T>>FXia>>FUp;if(Yy!=Xx) Cheat=1;
        in.close();
    }
    void Save(){
        ofstream out("水果忍胎存档.in");int Xx=0;
        for(int i=0;i<=21;i++) out<<Medal[i]<<' ',Xx+=345*(2*i+1)*Medal[i];
        out<<Xx<<' '<<Score<<' '<<Combo<<' '<<T<<' '<<FXia<<' '<<FUp;
        out.close();
    }
    void Medal_(){if(SS==1) return;
    	if(Cheat==1) Setpos(33,0),Color(4),printf("检测到您更改过存档,你的存档已不可用。"),memset(Medal,0,sizeof(Medal));
    	Setpos(33,1),Color(0),printf("[成就系统]  (按 c 可以存档 d 读档)");int rr=0;
    	Setpos(34,3);if(Medal[3]==1) Color(5),rr++;else Color(7);printf("[出刀!]   完成一次切割");
    	Setpos(34,4);if(Medal[7]==1) Color(5),rr++;else Color(7);printf("[绝杀]     在底线处完成一次切割");
    	Setpos(34,5);if(Medal[4]==1) Color(5),rr++;else Color(7);printf("[全图鉴]   切割全部五种水果");
    	Setpos(34,6);if(Medal[5]==1) Color(5),rr++;else Color(7);printf("[闪光]     达到十五 COMBO");   
    	Setpos(34,7);if(Medal[6]==1) Color(5),rr++;else Color(7);printf("[回眸]     精准达到 520 分");  
    	Setpos(34,8);if(Medal[8]==1) Color(5),rr++;else Color(7);printf("[柴刀]     下劈劈裂水果三十次");
    	Setpos(34,9);if(Medal[9]==1) Color(5),rr++;else Color(7);printf("[连锁反应] 一次腾空中切割五个水果");
    	Setpos(34,10);if(Medal[10]==1) Color(5),rr++;else Color(7);printf("[霹雳]     五秒钟切割十个水果");
    	Setpos(34,11);if(Medal[11]==1) Color(5),rr++;else Color(7);printf("[征服者]   进行五分钟游戏");
    	Setpos(34,12);if(Medal[12]==1) Color(5),rr++;else Color(7);printf("[神来之笔] 一次腾空中切割十个水果");
    	Setpos(34,13);if(Medal[13]==1) Color(5),rr++;else Color(7);printf("[天封]     在最高线处完成一次切割");
    	Setpos(34,14);if(Medal[14]==1) Color(5),rr++;else Color(7);printf("[升龙]     上劈劈裂水果四十次");
    	Setpos(34,15);if(Medal[15]==1) Color(5),rr++;else Color(7);printf("[小忍者]   达到一千分");
    	Setpos(34,16);if(Medal[16]==1) Color(5),rr++;else Color(7);printf("[八连]     一次腾空中冲刺八次(有巧解)");   
    	Setpos(34,17);if(Medal[17]==1) Color(5),rr++;else Color(7);printf("[连诀]     达到四十 COMBO");   
    	Setpos(34,18);if(Medal[18]==1) Color(5),rr++;else Color(7);printf("[幸存者]   连续十次空刀(请勿点亮)");    
    	Setpos(34,19);if(Medal[19]==1) Color(5),rr++;else Color(7);printf("[水果杀手] 达到一万分");
    	Setpos(34,20);if(Medal[20]==1) Color(5),rr++;else Color(7);printf("[虎翅]     腾空十秒");   
    	Setpos(34,21);if(Medal[21]==1) Color(5),rr++;else Color(7);printf("[你疯了?!] 达到十万分");
    	Setpos(34,22);if(rr>=19) Medal[22]=1;if(Medal[22]==1) Color((T%4<=1)?-4:-5);else Color(7);printf("[传说]     达成全部成就");   
    }
    int main(){	
        CONSOLE_CURSOR_INFO cursor_info={1,0};
        SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
        srand((unsigned)time(NULL));
        Start();
    	ST:SS=0;
    	system("cls");memset(N,0,sizeof(N));memset(M,0,sizeof(M));FC=FCF=FCT=FO=FFFt=FXia=FUp=0;memset(FT,0,sizeof(FT));memset(Medal,0,sizeof(Medal));
    	Put_Frame();Medal_();
    	T=0;Clocknum=0;X=2;Y=1;Vx=Vy=0;Jump=1;Put_Man(X,Y);//初始状态掉落 
    	memset(F,0,sizeof(F));l=m=0;Score=Combo=0;
        Setpos(2,-3),Color(1),cout<<"本游戏为休闲模式,没有目标分数,请尽情享受切水果的酣爽盛宴!(空格可以暂停)";Medal_();
        while(1) if(clock()-Clocknum>=25)
        {T++;if(T>11000&&Medal[11]==0) Medal[11]=1,Medal_();
        	Clocknum=clock();
        	up=dn=lf=rt=0;
            if(GetAsyncKeyState(VK_UP)&0x8000) up=1;else Jumplock=0; 
            if(GetAsyncKeyState(VK_DOWN)&0x8000) dn=1;else Dnlock=0; 
            if(GetAsyncKeyState(VK_LEFT)&0x8000) lf=1;else Lflock=0; 
            if(GetAsyncKeyState(VK_RIGHT)&0x8000) rt=1;else Rtlock=0; 
            if(kbhit()) {char g=_getch();if(g==' ') Sleep(100),Setpos(16,3),sy++,Color(0),system("pause");if(g=='c') Save(),system("color 6E"),Sleep(1000),system("color 0F");if(g=='d') Read(),system("color 6E"),Sleep(1000),system("color 0F"),Medal_();}
            if(sy>=1) Setpos(16,3),cout<<"                           ",sy=0;
            
    		if(RushT1==0) Move(0);
            Go();
    		if(RushT1==0&&T%speed==0) Print();
            
            if(clock()-Clocknum>=25) continue;
            if(T>=50&&T<=200&&T%15==5) CreatF();
    		if(T>=300&&T<2000&&T%80==5) CreatF();
    		else if(T>=2000&&T<3000&&T%70==5) CreatF();
    		else if(T>=3000&&T<4000&&T%50==5) CreatF();
    		else if(T>=4000&&T%30==5) CreatF();
    		if(T>=1500&&T%80==5) CreatF();
    		if(Combo>=10&&T%80==40) CreatF();
    	if((Combo<10&&T%140==0)||(Combo>=10&&Combo<20&&T%100==0)||(Combo>=20&&T%70==0)) Combo--;Combo=max(0,Combo);
        if(Rush==1||AttTime>0||Attention==1) Color(5);else Color(1);Setpos(2,-2),printf("积分:%-4d ",Score);
    	if(Combo>=15) Color((T%4<=1)?-4:-5); printf("  连击 %-3dCOMBO !!  ",Combo);
    	if(Rush==1||AttTime>0||Attention==1) Color(5);else Color(1);printf(" 用时:%d ",T);Color(0);
        }
        return 0;
    }
    
  • 通过的题目

  • 最近活动

  • Stat

  • Rating

题目标签

算法基础
20
数据结构
20
国庆集训
17
搜索
14
模拟
12
动态规划
11
dp
11
CSP-J复赛模拟
11
T1
9
USACO
8
数学
8
T2
8
递推
7
广度优先搜索
7
BFS
7
数论
6
CSP-J模拟
6
单调队列
6
二分答案
5
递归
5