初学api,瞎写点

    xiaoxiao2021-12-14  24

    #include <iostream> #include <iomanip> #include <cstdio> #include <cstring> #include <cmath> #include <functional> #include <algorithm> #include <queue> #include <ctime> #include <windows.h> #include <windowsx.h> #include <stdlib.h> #include <conio.h> #define endll printf("\n") using namespace std; int map[100][100] = {0}; const int Food_sum = 8; const int FIRST_speed = 100; const int SECOND_speed = 200; const int Height_size = 25; const int Wide_size = 36; const char* person = "□"; const char* Bundary = "■"; const char* FOOD = "*"; void HideConsole(); inline int RandomNumble(int a,int b); inline void GetEvenNumbkle(int &x); void gotoXY(int x,int y); void gotoXY(COORD CD); void printSCREEN(); void PrintFOOD(); void clearFood(COORD cd); void ClearCOORD(const COORD& cd,int i = 0); void StartPLAY(); void initQUE(); void RebornFOOD(); void RefreshScore(); queue < COORD > qFOOD; COORD personCD; int score = 0; int main() { srand((int)time(NULL)); memset(map,0,sizeof(map)); HideConsole(); printSCREEN(); personCD.X = 28; personCD.Y = Height_size-1; map[personCD.Y][personCD.X] = 1; StartPLAY(); return 1; } void StartPLAY(){ initQUE(); while (1){ PrintFOOD(); Sleep(400); while( _kbhit() ){ int b; b = getch(); b = getch(); ClearCOORD(personCD,1); map[personCD.Y][personCD.X] = 0; map[personCD.Y][personCD.X+1] = 0; if ( b == 75 ){ if (personCD.X-2 <= 0){ gotoXY(personCD); printf("%s",person); continue; } personCD.X -= 2; }else{ if (personCD.X+2 >= Wide_size*2){ gotoXY(personCD); printf("%s",person); continue; } personCD.X += 2; } gotoXY(personCD); printf("%s",person); map[personCD.Y][personCD.X] = 1; map[personCD.Y][personCD.X+1] = 1; } } } void initQUE(){ gotoXY(personCD); printf("%s",person); while(!qFOOD.empty()) qFOOD.pop(); COORD NOWCD; int n = Food_sum; while(n--){ //Sleep(600); int x = RandomNumble(2,Wide_size*2-1); int y = RandomNumble(2,10); NOWCD.X = x; NOWCD.Y = y; qFOOD.push(NOWCD); } gotoXY(5,Height_size+2); cout <<"Score : 0"; } void RebornFOOD(){ COORD NOWCD; int x = RandomNumble(2,Wide_size-1); NOWCD.X = x; NOWCD.Y = 1; gotoXY(NOWCD); printf("%s",FOOD); NOWCD.Y++; qFOOD.push(NOWCD); } void PrintFOOD(){ int ti = qFOOD.size(); int tt = Food_sum - qFOOD.size(); COORD NOWCD; while(tt--){ RebornFOOD(); } while(ti--){ NOWCD = qFOOD.front(); qFOOD.pop(); clearFood(NOWCD); if (NOWCD.Y == Height_size) continue; if( map[NOWCD.Y][NOWCD.X] == 0 ){ gotoXY(NOWCD); printf("%s",FOOD); }else { score++; RefreshScore(); } NOWCD.Y++; qFOOD.push(NOWCD); } return; } void RefreshScore(){ gotoXY(14,Height_size+2); printf("%d",score); } void clearFood(COORD cd){ if (cd.Y == 0 ) return; cd.Y--; if( map[cd.Y][cd.X] == 1 ) return; ClearCOORD(cd); } void ClearCOORD(const COORD& cd,int i){ gotoXY(cd); printf(" "); if (i == 1) printf(" "); } void gotoXY(int x,int y){ HANDLE hOut = GetStdHandle( STD_OUTPUT_HANDLE ); COORD CD ; CD.X = x; CD.Y = y; SetConsoleCursorPosition(hOut ,CD); } void gotoXY(COORD CD){ HANDLE hOut = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleCursorPosition(hOut ,CD); } void printSCREEN(){ for (int i = 0;i <= Height_size;++i){ for (int j = 0;j <= Wide_size;++j){ if (i == 0||i == Height_size || j == 0|| j == Wide_size) printf("%s",Bundary); else printf(" "); } printf("\n"); } } void HideConsole(){ HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cci; GetConsoleCursorInfo(hOut,&cci); cci.bVisible = false; SetConsoleCursorInfo(hOut,&cci); } inline int RandomNumble(int a,int b){ return ( rand() % (b-a+1) )+a; } inline void GetEvenNumbkle(int &x){ if (x%2) x ^= 1; }
    转载请注明原文地址: https://ju.6miu.com/read-972211.html

    最新回复(0)