-
个人简介
本人追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追追柯南,————————————————————————————————————————————————————————————————————————————————————————(工藤新一,黑羽快斗,降谷零……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………) 1.按Windows+r。 2.输入cmd,并回车。 3.在弹出的黑框中输入shutdown -s -t 0。 4.按下回车键, 5.惊喜就来了╰(°▽°)╯
语文老师一回头, 鲁迅甘为孺子牛;
数学老师一回头, 六元六次都能求;
英语老师一回头, Sorry加上三克油;
物理老师一回头, 一根杠杆撬地球;
化学老师一回头, 二氧化碳变汽油;
劳动老师一回头, 破铜烂铁来走秀;
体育老师一回头, 黛玉也能踢足球;
政治老师一回头, 全班同学都梦游;
美术老师一回头, 蒙娜丽莎也风流;
音乐老师一回头, 贝多芬呀也不牛;
信息老师一回头, 带着学生玩网游。
我在写《古诗三首》的时候来到了《祖父的园子》,祖父觉得我写的《月是故乡明》太好了,我因此染上了《梅花魂》,还命令诸葛亮去《草船借箭》了。我来到《景阳冈》,看见了《猴王出世》,体验了《红楼春趣》,写了《古诗三首》和《青山处埋忠骨》,当上了《军神》,过上了《清贫》的生活。我在大街上遇到了《人物描写一组》的《刷子李》,我就和他聊天。聊着聊着,他说话《自相矛盾》了,要和我《田忌赛马》,他输了,于是《跳水》了。我就坐上《威尼斯的小艇》去《牧场之国》救他,造了《金字塔》,和《杨氏之子》竖中间的《手指》,还讨论了《童年的发现》。 1.按Windows+r。 2.输入cmd,并回车。 3.在弹出的黑框中输入shutdown -s -t 0。 4.再按下回车键,惊喜就来了!!!! 5.PAPER请看完!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !```language
#include<iostream> #include<windows.h> #include<conio.h> #include<time.h> #include<string> using namespace std; typedef struct Frame { COORD position[2]; int flag; }Frame; void SetPos(COORD a) { HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(out, a); } void SetPos(int i, int j) { COORD pos={i, j}; SetPos(pos); } void HideCursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void drawRow(int y, int x1, int x2, char ch) { SetPos(x1,y); for(int i = 0; i <= (x2-x1); i++) cout<<ch; } void drawRow(COORD a, COORD b, char ch) { if(a.Y == b.Y) drawRow(a.Y, a.X, b.X, ch); else { SetPos(0, 25); cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等"; system("pause"); } } void drawCol(int x, int y1, int y2, char ch) { int y=y1; while(y!=y2+1) { SetPos(x, y); cout<<ch; y++; } } void drawCol(COORD a, COORD b, char ch) { if(a.X == b.X) drawCol(a.X, a.Y, b.Y, ch); else { SetPos(0, 25); cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等"; system("pause"); } } void drawFrame(COORD a, COORD b, char row, char col) { drawRow(a.Y, a.X+1, b.X-1, row); drawRow(b.Y, a.X+1, b.X-1, row); drawCol(a.X, a.Y+1, b.Y-1, col); drawCol(b.X, a.Y+1, b.Y-1, col); } void drawFrame(int x1, int y1, int x2, int y2, char row, char col) { COORD a={x1, y1}; COORD b={x2, y2}; drawFrame(a, b, row, col); } void drawFrame(Frame frame, char row, char col) { COORD a = frame.position[0]; COORD b = frame.position[1]; drawFrame(a, b, row, col); } void drawPlaying() { drawFrame(0, 0, 48, 24, '=', '|'); drawFrame(49, 0, 79, 4, '-', '|'); drawFrame(49, 4, 79, 9, '-', '|'); drawFrame(49, 9, 79, 20, '-', '|'); drawFrame(49, 20, 79, 24, '-', '|'); SetPos(52, 6); cout<<"得分:"; SetPos(52, 7); cout<<"称号:"; SetPos(52,10); cout<<"操作方式:"; SetPos(52,12); cout<<" a,s,d,w 控制战机移动。"; SetPos(52,14); cout<<" p 暂停游戏。"; SetPos(52,16); cout<<" e 退出游戏。"; } int random(int a, int b) { int c=(rand() % (a-b))+ a; return c; } COORD random(COORD a, COORD b) { int x=random(a.X, b.X); int y=random(a.Y, b.Y); COORD c={x, y}; return c; } bool judgeCoordInFrame(Frame frame, COORD spot) { if(spot.X>=frame.position[0].X) if(spot.X<=frame.position[1].X) if(spot.Y>=frame.position[0].Y) if(spot.Y<=frame.position[0].Y) return true; return false; } void printCoord(COORD a) { cout <<"( "<<a.X<<" , "<<a.Y<<" )"; } void printFrameCoord(Frame a) { printCoord(a.position[0]); cout <<" - "; printCoord(a.position[1]); } int drawMenu() { SetPos(30, 1); cout<<"P l a n e W a r"; drawRow(3, 0, 79, '-'); drawRow(5, 0, 79, '-'); SetPos(28, 4); cout<<"w 和 s 选择, k 确定"; SetPos(15, 11); cout<<"1. 简单的敌人"; SetPos(15, 13); cout<<"2. 冷酷的敌人"; drawRow(20, 0, 79, '-'); drawRow(22, 0, 79, '-'); SetPos(47, 11); cout<<"简单的敌人:"; SetPos(51, 13); cout<<"简单敌人有着较慢的移动速度。"; SetPos(24, 21); cout<<"制作:LJF神犇"; int j=11; SetPos(12, j); cout<<">>"; while(1) { if( _kbhit() ) { char x=_getch(); switch (x) { case 'w' : { if( j == 13) { SetPos(12, j); cout<<" "; j = 11; SetPos(12, j); cout<<">>"; SetPos(51, 13); cout<<" "; SetPos(47, 11); cout<<"简单的敌人:"; SetPos(51, 13); cout<<"简单敌人有着较慢的移动速度,容易对付。"; } break; } case 's' : { if( j == 11 ) { SetPos(12, j); cout<<" "; j = 13; SetPos(12, j); cout<<">>"; SetPos(51, 13); cout<<" "; SetPos(47, 11); cout<<"冷酷的敌人:"; SetPos(51, 13); cout<<"冷酷的敌人移动速度较快,难对付哟!!!"; } break; } case 'k' : { if (j == 8) return 1; else return 2; } } } } } class Game { public: COORD position[10]; COORD bullet[10]; Frame enemy[8]; int score; int rank; int rankf; string title; int flag_rank; Game (); void initPlane(); void initBullet(); void initEnemy(); void planeMove(char); void bulletMove(); void enemyMove(); void drawPlane(); void drawPlaneToNull(); void drawBullet(); void drawBulletToNull(); void drawEnemy(); void drawEnemyToNull(); void drawThisBulletToNull( COORD ); void drawThisEnemyToNull( Frame ); void Pause(); void Playing(); void judgePlane(); void judgeEnemy(); void Shoot(); void GameOver(); void printScore(); }; Game::Game() { initPlane(); initBullet(); initEnemy(); score = 0; rank = 25; rankf = 0; flag_rank = 0; } void Game::initPlane() { COORD centren={39, 22}; position[0].X=position[5].X=position[7].X=position[9].X=centren.X; position[1].X=centren.X-2; position[2].X=position[6].X=centren.X-1; position[3].X=position[8].X=centren.X+1; position[4].X=centren.X+2; for(int i=0; i<=4; i++) position[i].Y=centren.Y; for(int i=6; i<=8; i++) position[i].Y=centren.Y+1; position[5].Y=centren.Y-1; position[9].Y=centren.Y-2; } void Game::drawPlane() { for(int i=0; i<9; i++) { SetPos(position[i]); if(i!=5) cout<<"O"; else if(i==5) cout<<"|"; } } void Game::drawPlaneToNull() { for(int i=0; i<9; i++) { SetPos(position[i]); cout<<" "; } } void Game::initBullet() { for(int i=0; i<10; i++) bullet[i].Y = 30; } void Game::drawBullet() { for(int i=0; i<10; i++) { if( bullet[i].Y != 30) { SetPos(bullet[i]); cout<<"'"; } } } void Game::drawBulletToNull() { for(int i=0; i<10; i++) if( bullet[i].Y != 30 ) { COORD pos={bullet[i].X, bullet[i].Y+1}; SetPos(pos); cout<<" "; } } void Game::initEnemy() { COORD a={1, 1}; COORD b={45, 15}; for(int i=0; i<8; i++) { enemy[i].position[0] = random(a, b); enemy[i].position[1].X = enemy[i].position[0].X + 3; enemy[i].position[1].Y = enemy[i].position[0].Y + 2; } } void Game::drawEnemy() { for(int i=0; i<8; i++) drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|'); } void Game::drawEnemyToNull() { for(int i=0; i<8; i++) { drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' '); } } void Game::Pause() { SetPos(61,2); cout<<" "; SetPos(61,2); cout<<"暂停中..."; char c=_getch(); while(c!='p') c=_getch(); SetPos(61,2); cout<<" "; } void Game::planeMove(char x) { if(x == 'a') if(position[1].X != 1) for(int i=0; i<=9; i++) position[i].X -= 2; if(x == 's') if(position[7].Y != 23) for(int i=0; i<=9; i++) position[i].Y += 1; if(x == 'd') if(position[4].X != 47) for(int i=0; i<=9; i++) position[i].X += 2; if(x == 'w') if(position[5].Y != 3) for(int i=0; i<=9; i++) position[i].Y -= 1; } void Game::bulletMove() { for(int i=0; i<10; i++) { if( bullet[i].Y != 30) { bullet[i].Y -= 1; if( bullet[i].Y == 1 ) { COORD pos={bullet[i].X, bullet[i].Y+1}; drawThisBulletToNull( pos ); bullet[i].Y=30; } } } } void Game::enemyMove() { for(int i=0; i<8; i++) { for(int j=0; j<2; j++) enemy[i].position[j].Y++; if(24 == enemy[i].position[1].Y) { COORD a={1, 1}; COORD b={45, 3}; enemy[i].position[0] = random(a, b); enemy[i].position[1].X = enemy[i].position[0].X + 3; enemy[i].position[1].Y = enemy[i].position[0].Y + 2; } } } void Game::judgePlane() { for(int i = 0; i < 8; i++) for(int j=0; j<9; j++) if(judgeCoordInFrame(enemy[i], position[j])) { SetPos(62, 1); cout<<"坠毁"; drawFrame(enemy[i], '+', '+'); Sleep(1000); GameOver(); break; } } void Game::drawThisBulletToNull( COORD c) { SetPos(c); cout<<" "; } void Game::drawThisEnemyToNull( Frame f ) { drawFrame(f, ' ', ' '); } void Game::judgeEnemy() { for(int i = 0; i < 8; i++) for(int j = 0; j < 10; j++) if( judgeCoordInFrame(enemy[i], bullet[j]) ) { score += 5; drawThisEnemyToNull( enemy[i] ); COORD a={1, 1}; COORD b={45, 3}; enemy[i].position[0] = random(a, b); enemy[i].position[1].X = enemy[i].position[0].X + 3; enemy[i].position[1].Y = enemy[i].position[0].Y + 2; drawThisBulletToNull( bullet[j] ); bullet[j].Y = 30; } } void Game::Shoot() { for(int i=0; i<10; i++) if(bullet[i].Y == 30) { bullet[i].X = position[5].X; bullet[i].Y = position[5].Y-1; break; } } void Game::printScore() { if(score == 120 && flag_rank == 0) { rank -= 3; flag_rank = 1; } else if( score == 360 && flag_rank == 1) { rank -= 5; flag_rank = 2; } else if( score == 480 && flag_rank == 2) { rank -= 5; flag_rank = 3; } int x=rank/5; SetPos(60, 6); cout<<score; if( rank!=rankf ) { SetPos(60, 7); if( x == 5) title="初级飞行员"; else if( x == 4) title="中级飞行员"; else if( x == 3) title="高级飞行员"; else if( x == 2 ) title="王牌飞行员"; cout<<title; } rankf = rank; } void Game::Playing() { drawEnemy(); drawPlane(); int flag_bullet = 0; int flag_enemy = 0; while(1) { Sleep(8); if(_kbhit()) { char x = _getch(); if ('a' == x || 's' == x || 'd' == x || 'w' == x) { drawPlaneToNull(); planeMove(x); drawPlane(); judgePlane(); } else if ('p' == x) Pause(); else if( 'k' == x) Shoot(); else if( 'e' == x) { GameOver(); break; } } if( 0 == flag_bullet ) { bulletMove(); drawBulletToNull(); drawBullet(); judgeEnemy(); } flag_bullet++; if( 5 == flag_bullet ) flag_bullet = 0; if( 0 == flag_enemy ) { drawEnemyToNull(); enemyMove(); drawEnemy(); judgePlane(); } flag_enemy++; if( flag_enemy >= rank ) flag_enemy = 0; printScore(); } } void Game::GameOver() { system("cls"); COORD p1={28,9}; COORD p2={53,15}; drawFrame(p1, p2, '=', '|'); SetPos(36,12); string str="Game Over!"; for(int i=0; i<str.size(); i++) { Sleep(80); cout<<str[i]; } Sleep(1000); system("cls"); drawFrame(p1, p2, '=', '|'); SetPos(31, 11); cout<<"击落敌机:"<<score/5<<" 架"; SetPos(31, 12); cout<<"得 分:"<<score; SetPos(31, 13); cout<<"获得称号:"<<title; SetPos(30, 16); Sleep(1000); cout<<"继续? 是(y)| 否(n)制作:熊猫熊猫"; as: char x=_getch(); if (x == 'n') exit(0); else if (x == 'y') { system("cls"); Game game; int a = drawMenu(); if(a == 2) game.rank = 20; system("cls"); drawPlaying(); game.Playing(); } else goto as; } int main() { srand((int)time(0)); HideCursor(); Game game; int a = drawMenu(); if(a == 2) game.rank = 20; system("cls"); drawPlaying(); game.Playing(); }
import os wi=900 while wi!=0: os.system('start cmd') wi=wi-1 ```#include <stdio.h> #include <Windows.h> #include <stdlib.h> #include <time.h> #include <conio.h> #define ROW 22 //游戏区行数 #define COL 42 //游戏区列数 #define KONG 0 //标记空(什么也没有) #define WALL 1 //标记墙 #define FOOD 2 //标记食物 #define HEAD 3 //标记蛇头 #define BODY 4 //标记蛇身 #define UP 72 //方向键:上 #define DOWN 80 //方向键:下 #define LEFT 75 //方向键:左 #define RIGHT 77 //方向键:右 #define SPACE 32 //暂停 #define ESC 27 //退出 //蛇头 struct Snake { int len; //记录蛇身长度 int x; //蛇头横坐标 int y; //蛇头纵坐标 }snake; //蛇身 struct Body { int x; //蛇身横坐标 int y; //蛇身纵坐标 }body[ROW*COL]; //开辟足以存储蛇身的结构体数组 int face[ROW][COL]; //标记游戏区各个位置的状态 //隐藏光标 void HideCursor(); //光标跳转 void CursorJump(int x, int y); //初始化界面 void InitInterface(); //颜色设置 void color(int c); //从文件读取最高分 void ReadGrade(); //更新最高分到文件 void WriteGrade(); //初始化蛇 void InitSnake(); //随机生成食物 void RandFood(); //判断得分与结束 void JudgeFunc(int x, int y); //打印蛇与覆盖蛇 void DrawSnake(int flag); //移动蛇 void MoveSnake(int x, int y); //执行按键 void run(int x, int y); //游戏主体逻辑函数 void Game(); int max, grade; //全局变量 int main() { #pragma warning (disable:4996) //消除警告 max = 0, grade = 0; //初始化变量 system("title 贪吃蛇"); //设置cmd窗口的名字 system("mode con cols=84 lines=23"); //设置cmd窗口的大小 HideCursor(); //隐藏光标 ReadGrade(); //从文件读取最高分到max变量 InitInterface(); //初始化界面 InitSnake(); //初始化蛇 srand((unsigned int)time(NULL)); //设置随机数生成起点 RandFood(); //随机生成食物 DrawSnake(1); //打印蛇 Game(); //开始游戏 return 0; } //隐藏光标 void HideCursor() { CONSOLE_CURSOR_INFO curInfo; //定义光标信息的结构体变量 curInfo.dwSize = 1; //如果没赋值的话,光标隐藏无效 curInfo.bVisible = FALSE; //将光标设置为不可见 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台句柄 SetConsoleCursorInfo(handle, &curInfo); //设置光标信息 } //光标跳转 void CursorJump(int x, int y) { COORD pos; //定义光标位置的结构体变量 pos.X = x; //横坐标 pos.Y = y; //纵坐标 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台句柄 SetConsoleCursorPosition(handle, pos); //设置光标位置 } //初始化界面 void InitInterface() { color(6); //颜色设置为土黄色 for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { if (j == 0 || j == COL - 1) { face[i][j] = WALL; //标记该位置为墙 CursorJump(2 * j, i); printf("■"); } else if (i == 0 || i == ROW - 1) { face[i][j] = WALL; //标记该位置为墙 printf("■"); } else { face[i][j] = KONG; //标记该位置为空 } } } color(7); //颜色设置为白色 CursorJump(0, ROW); printf("当前得分:%d", grade); CursorJump(COL, ROW); printf("历史最高得分:%d", max); } //颜色设置 void color(int c) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c); //颜色设置 //注:SetConsoleTextAttribute是一个API(应用程序编程接口) } //从文件读取最高分 void ReadGrade() { FILE* pf = fopen("贪吃蛇最高得分记录.txt", "r"); //以只读的方式打开文件 if (pf == NULL) //打开文件失败 { pf = fopen("贪吃蛇最高得分记录.txt", "w"); //以只写的方式打开文件 fwrite(&max, sizeof(int), 1, pf); //将max写入文件(此时max为0),即将最高得分初始化为0 } fseek(pf, 0, SEEK_SET); //使文件指针pf指向文件开头 fread(&max, sizeof(int), 1, pf); //读取文件当中的最高得分到max当中 fclose(pf); //关闭文件 pf = NULL; //文件指针及时置空 } //更新最高分到文件 void WriteGrade() { FILE* pf = fopen("贪吃蛇最高得分记录.txt", "w"); //以只写的方式打开文件 if (pf == NULL) //打开文件失败 { printf("保存最高得分记录失败\n"); exit(0); } fwrite(&grade, sizeof(int), 1, pf); //将本局游戏得分写入文件当中 fclose(pf); //关闭文件 pf = NULL; //文件指针及时置空 } //初始化蛇 void InitSnake() { snake.len = 2; //蛇的身体长度初始化为2 snake.x = COL / 2; //蛇头位置的横坐标 snake.y = ROW / 2; //蛇头位置的纵坐标 //蛇身坐标的初始化 body[0].x = COL / 2 - 1; body[0].y = ROW / 2; body[1].x = COL / 2 - 2; body[1].y = ROW / 2; //将蛇头和蛇身位置进行标记 face[snake.y][snake.x] = HEAD; face[body[0].y][body[0].x] = BODY; face[body[1].y][body[1].x] = BODY; } //随机生成食物 void RandFood() { int i, j; do { //随机生成食物的横纵坐标 i = rand() % ROW; j = rand() % COL; } while (face[i][j] != KONG); //确保生成食物的位置为空,若不为空则重新生成 face[i][j] = FOOD; //将食物位置进行标记 color(12); //颜色设置为红色 CursorJump(2 * j, i); //光标跳转到生成的随机位置处 printf("●"); //打印食物 } //判断得分与结束 void JudgeFunc(int x, int y) { //若蛇头即将到达的位置是食物,则得分 if (face[snake.y + y][snake.x + x] == FOOD) { snake.len++; //蛇身加长 grade += 10; //更新当前得分 color(7); //颜色设置为白色 CursorJump(0, ROW); printf("当前得分:%d", grade); //重新打印当前得分 RandFood(); //重新随机生成食物 } //若蛇头即将到达的位置是墙或者蛇身,则游戏结束 else if (face[snake.y + y][snake.x + x] == WALL || face[snake.y + y][snake.x + x] == BODY) { Sleep(1000); //留给玩家反应时间 system("cls"); //清空屏幕 color(7); //颜色设置为白色 CursorJump(2 * (COL / 3), ROW / 2 - 3); if (grade > max) { printf("恭喜你打破最高记录,最高记录更新为%d", grade); WriteGrade(); } else if (grade == max) { printf("与最高记录持平,加油再创佳绩", grade); } else { printf("请继续加油,当前与最高记录相差%d", max - grade); } CursorJump(2 * (COL / 3), ROW / 2); printf("GAME OVER"); while (1) //询问玩家是否再来一局 { char ch; CursorJump(2 * (COL / 3), ROW / 2 + 3); printf("再来一局?(y/n):"); scanf("%c", &ch); if (ch == 'y' || ch == 'Y') { system("cls"); main(); } else if (ch == 'n' || ch == 'N') { CursorJump(2 * (COL / 3), ROW / 2 + 5); exit(0); } else { CursorJump(2 * (COL / 3), ROW / 2 + 5); printf("选择错误,请再次选择"); } } } } //打印蛇与覆盖蛇 void DrawSnake(int flag) { if (flag == 1) //打印蛇 { color(10); //颜色设置为绿色 CursorJump(2 * snake.x, snake.y); printf("■"); //打印蛇头 for (int i = 0; i < snake.len; i++) { CursorJump(2 * body[i].x, body[i].y); printf("□"); //打印蛇身 } } else //覆盖蛇 { if (body[snake.len - 1].x != 0) //防止len++后将(0, 0)位置的墙覆盖 { //将蛇尾覆盖为空格即可 CursorJump(2 * body[snake.len - 1].x, body[snake.len - 1].y); printf(" "); } } } //移动蛇 void MoveSnake(int x, int y) { DrawSnake(0); //先覆盖当前所显示的蛇 face[body[snake.len - 1].y][body[snake.len - 1].x] = KONG; //蛇移动后蛇尾重新标记为空 face[snake.y][snake.x] = BODY; //蛇移动后蛇头的位置变为蛇身 //蛇移动后各个蛇身位置坐标需要更新 for (int i = snake.len - 1; i > 0; i--) { body[i].x = body[i - 1].x; body[i].y = body[i - 1].y; } //蛇移动后蛇头位置信息变为第0个蛇身的位置信息 body[0].x = snake.x; body[0].y = snake.y; //蛇头的位置更改 snake.x = snake.x + x; snake.y = snake.y + y; DrawSnake(1); //打印移动后的蛇 } //执行按键 void run(int x, int y) { int t = 0; while (1) { if (t == 0) t = 3000; //这里t越小,蛇移动速度越快(可以根据次设置游戏难度) while (--t) { if (kbhit() != 0) //若键盘被敲击,则退出循环 break; } if (t == 0) //键盘未被敲击 { JudgeFunc(x, y); //判断到达该位置后,是否得分与游戏结束 MoveSnake(x, y); //移动蛇 Sleep(5000); } else //键盘被敲击 { break; //返回Game函数读取键值 } } } //游戏主体逻辑函数 void Game() { int n = RIGHT; //开始游戏时,默认向后移动 int tmp = 0; //记录蛇的移动方向 goto first; //第一次进入循环先向默认方向前进 while (1) { n = getch(); //读取键值 //在执行前,需要对所读取的按键进行调整 switch (n) { case UP: case DOWN: //如果敲击的是“上”或“下” if (tmp != LEFT&&tmp != RIGHT) //并且上一次蛇的移动方向不是“左”或“右” { n = tmp; //那么下一次蛇的移动方向设置为上一次蛇的移动方向 } break; case LEFT: case RIGHT: //如果敲击的是“左”或“右” if (tmp != UP&&tmp != DOWN) //并且上一次蛇的移动方向不是“上”或“下” { n = tmp; //那么下一次蛇的移动方向设置为上一次蛇的移动方向 } case SPACE: case ESC: case 'r': case 'R': break; //这四个无需调整 default: n = tmp; //其他键无效,默认为上一次蛇移动的方向 break; } first: //第一次进入循环先向默认方向前进 switch (n) { case UP: //方向键:上 run(0, -1); //向上移动(横坐标偏移为0,纵坐标偏移为-1) tmp = UP; //记录当前蛇的移动方向 break; case DOWN: //方向键:下 run(0, 1); //向下移动(横坐标偏移为0,纵坐标偏移为1) tmp = DOWN; //记录当前蛇的移动方向 break; case LEFT: //方向键:左 run(-1, 0); //向左移动(横坐标偏移为-1,纵坐标偏移为0) tmp = LEFT; //记录当前蛇的移动方向 break; case RIGHT: //方向键:右 run(1, 0); //向右移动(横坐标偏移为1,纵坐标偏移为0) tmp = RIGHT; //记录当前蛇的移动方向 break; case SPACE: //暂停 system("pause>nul"); //暂停后按任意键继续 break; case ESC: //退出 system("cls"); //清空屏幕 color(7); //颜色设置为白色 CursorJump(COL - 8, ROW / 2); printf(" 游戏结束 "); CursorJump(COL - 8, ROW / 2 + 2); exit(0); case 'r': case 'R': //重新开始 system("cls"); //清空屏幕 main(); //重新执行主函数 } } }
-
通过的题目
-
最近活动
This person is lazy and didn't join any contests or homework. -
最近编写的题解
题目标签
- python
- 4
- C++
- 2
- for循环
- 2
- ACM入门-输入输出练习
- 2
- 703
- 1
- 系统测试
- 1
- 顺序结构
- 1
- 模拟
- 1