4 条题解

  • 0
    @ 2025-4-19 21:43:18

    #include<bits/stdc++.h> using namespace std; main(){ cout<<"a=22\nb=20"; }

    • 0
      @ 2025-4-19 21:43:02

      #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <time.h> #include <conio.h> #define frame_height 30//地图尺寸 #define frame_width 50 #define UP 'w'//移动 #define DOWN 's' #define LEFT 'a' #define RIGHT 'd' int i,j,k,sp,score; char ch=UP,state=UP,choo,n;//初始化方向 int grow=0; struct Food//食物 { int x;//横坐标 int y;//纵坐标 } food; struct Snake//蛇 { /*用数组储存蛇的每一部分的坐标*/ int x[100]; int y[100]; int len;//长度 int speed;//速度 } snake; void map(void);//地图 void update_food(void);//更新食物 void move_snake(void);//蛇的移动 int alive(void);//判断蛇是否死亡 void get_speed(void);//更新速度 void gotoxy(int x,int y);//移动光标,进行游戏界面的打印 int main() { do { score=0;//初始化分数为0 /*让用户进行难度选择,有彩蛋*/ printf("Choose the degree of difficulty:\n1:easy\t2:middle 3:difficult\n"); n=getch(); switch(n) { case '1': { sp=300; break; } case '2': { sp=230; break; } case '3': { sp=180; break; } default: { printf("Congratulations!Welcome to Devil's difficulty\n"); sp=120; break; } } system("cls");//每次新一局游戏先清屏,包含在<stdlib.h> map();//打印地图 /*开始游戏*/ while(1) { update_food();//生产食物 get_speed();//获取速度 move_snake();//移动 Sleep(snake.speed);//延时函数,speed数值越大延时越长 if(!(alive()))//判断蛇是否死亡 { break;//死亡则退出循环 } } printf("Game Over!\n"); printf("1:Restart\t2:exit"); choo=getch(); } while(choo=='1'); return 0; } void map() { srand(time(NULL)); /*打印第一个食物*/ /*Attention!此处留了一个bug:可能食物 的位置与初始的蛇重合,然后食物就会消 失,读者可以加以改进*/ food.x=rand()%(frame_height-2)+1; food.y=rand()%(frame_width-2)+1;//在框内 gotoxy(food.x,food.y);//把光标移动到该坐标 printf("$");//打印食物 /*snake的初始化*/ snake.x[0]=frame_height/2; snake.y[0]=frame_width/2; gotoxy(snake.x[0],snake.y[0]); printf("@"); snake.len=3; snake.speed=200; for(k=1; k<snake.len; k++) { snake.x[k]=snake.x[k-1]+1; snake.y[k]=snake.y[k-1]; gotoxy(snake.x[k],snake.y[k]); printf("@"); } /*墙壁*/ for(j=0; j<frame_width; j++) { gotoxy(0,j); printf("#"); gotoxy(frame_height-1,j); printf("#"); } for(i=0; i<frame_height-1; i++) { gotoxy(i,0); printf("#"); gotoxy(i,frame_width-1); printf("#"); } gotoxy(2,frame_width+3); if(n=='1') printf("Difficulty: easy"); else if(n=='2') printf("Difficulty: middle"); else if(n=='3') printf("Difficulty: difficult"); else printf("Welcome to the Devil's difficulty"); gotoxy(4,frame_width+3); printf("UP: w"); gotoxy(6,frame_width+3); printf("DOWN: s"); gotoxy(8,frame_width+3); printf("LEFT: a"); gotoxy(10,frame_width+3); printf("RIGHT:d"); gotoxy(12,frame_width+3); printf("Your score:%d",score); gotoxy(28,frame_width+3); printf("Made by Zhao Hejie"); } /*食物*/ void update_food() { if(snake.x[0]food.x&&snake.y[0]food.y)//吃到食物 { score+=10; gotoxy(12,frame_width+3); printf("Your score:%d",score); srand(time(NULL)); /*以下是更新食物的代码,里面排除了 食物与蛇重合的情况,读者可以参考以 下代码完成对上述bug的改进*/ int flag=1;//标记变量 do { food.x=rand()%(frame_height-2)+1; food.y=rand()%(frame_width-2)+1;//在框内 for(i=0; i<snake.len; i++) { if(food.xsnake.x[i]&&food.ysnake.y[i]) { flag=0;//有重合 break; } } } while(flag0); /*打印食物*/ gotoxy(food.x,food.y); printf("$"); snake.len++; grow=1;//表明长了,在move_snake函数中有用到 } } /*移动蛇*/ void move_snake() { while(kbhit())//键盘有输入 { ch=getch(); } if(!grow)//没有长 { gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]); printf(" ");//走了,在数组的最后打印空格,清除原有的蛇尾 } for(k=snake.len-1; k>0; k--)//更新蛇的坐标,除了蛇头,其余位置继承上一个点的坐标 { snake.x[k]=snake.x[k-1]; snake.y[k]=snake.y[k-1];//移动位置 } switch(ch)//改变方向 { case UP: { if(stateDOWN)//如果此时方向向下,输入向上的作用要被无视 { snake.x[0]++; break; } else { snake.x[0]--; state=UP;//其余的改变状态为向上 break; } } case DOWN: { if(stateUP) { snake.x[0]--; break; } else { snake.x[0]++; state=DOWN; break; } } case LEFT: { if(stateRIGHT) { snake.y[0]++; break; } else { snake.y[0]--; state=LEFT; break; } } case RIGHT: { if(stateLEFT) { snake.y[0]--; break; } else { snake.y[0]++; state=RIGHT; break; } } /*摁其余键,保持原有状态*/ default: { if(stateDOWN) { snake.x[0]++; break; } else if(stateUP) { snake.x[0]--; break; } else if(stateLEFT) { snake.y[0]--; break; } else if(state==RIGHT) { snake.y[0]++; break; } } } gotoxy(snake.x[0],snake.y[0]); printf("@");//打印蛇头 grow=0;//初始成长状态为0 gotoxy(frame_height,0);//光标移动到地图左下角下方 } /*存活状态*/ int alive(void) { if(snake.x[0]==0||snake.x[0]==frame_height-1||snake.y[0]==0||snake.y[0]==frame_width-1)//撞墙 return 0; for(k=1; k<snake.len; k++) //咬到自己 { if(snake.x[0]==snake.x[k]&&snake.y[0]==snake.y[k]) return 0; } return 1; } /*加速*/ /*speed越大,蛇的速度越小*/ void get_speed() { if(snake.len<=6) snake.speed=sp; else if(snake.len<=10) snake.speed=sp-20; else if(snake.len<=20) snake.speed=sp-50; else if(snake.len<=30) snake.speed=sp-60; else snake.speed=sp-70; } /*移动光标*/ void gotoxy(int x,int y) { HANDLE hout; COORD cor; /* typedef struct _COORD { SHORT X; // horizontal coordinate SHORT Y; // vertical coordinate } COORD; 用该结构体来储存坐标 */ hout=GetStdHandle(STD_OUTPUT_HANDLE);//从标准输出设备中取得一个句柄 /*这其中x,y的赋值对象要注意,不懂的好好想想*/ cor.X=y; cor.Y=x; SetConsoleCursorPosition(hout,cor);//定位光标的函数 }

      • 0
        @ 2024-5-25 12:05:00

        #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <time.h> #include <conio.h> #define frame_height 30//地图尺寸 #define frame_width 50 #define UP 'w'//移动 #define DOWN 's' #define LEFT 'a' #define RIGHT 'd' int i,j,k,sp,score; char ch=UP,state=UP,choo,n;//初始化方向 int grow=0; struct Food//食物 { int x;//横坐标 int y;//纵坐标 } food; struct Snake//蛇 { /*用数组储存蛇的每一部分的坐标*/ int x[100]; int y[100]; int len;//长度 int speed;//速度 } snake; void map(void);//地图 void update_food(void);//更新食物 void move_snake(void);//蛇的移动 int alive(void);//判断蛇是否死亡 void get_speed(void);//更新速度 void gotoxy(int x,int y);//移动光标,进行游戏界面的打印 int main() { do { score=0;//初始化分数为0 /*让用户进行难度选择,有彩蛋*/ printf("Choose the degree of difficulty:\n1:easy\t2:middle 3:difficult\n"); n=getch(); switch(n) { case '1': { sp=300; break; } case '2': { sp=230; break; } case '3': { sp=180; break; } default: { printf("Congratulations!Welcome to Devil's difficulty\n"); sp=120; break; } } system("cls");//每次新一局游戏先清屏,包含在<stdlib.h> map();//打印地图 /*开始游戏*/ while(1) { update_food();//生产食物 get_speed();//获取速度 move_snake();//移动 Sleep(snake.speed);//延时函数,speed数值越大延时越长 if(!(alive()))//判断蛇是否死亡 { break;//死亡则退出循环 } } printf("Game Over!\n"); printf("1:Restart\t2:exit"); choo=getch(); } while(choo=='1'); return 0; } void map() { srand(time(NULL)); /*打印第一个食物*/ /*Attention!此处留了一个bug:可能食物 的位置与初始的蛇重合,然后食物就会消 失,读者可以加以改进*/ food.x=rand()%(frame_height-2)+1; food.y=rand()%(frame_width-2)+1;//在框内 gotoxy(food.x,food.y);//把光标移动到该坐标 printf("$");//打印食物 /*snake的初始化*/ snake.x[0]=frame_height/2; snake.y[0]=frame_width/2; gotoxy(snake.x[0],snake.y[0]); printf("@"); snake.len=3; snake.speed=200; for(k=1; k<snake.len; k++) { snake.x[k]=snake.x[k-1]+1; snake.y[k]=snake.y[k-1]; gotoxy(snake.x[k],snake.y[k]); printf("@"); } /*墙壁*/ for(j=0; j<frame_width; j++) { gotoxy(0,j); printf("#"); gotoxy(frame_height-1,j); printf("#"); } for(i=0; i<frame_height-1; i++) { gotoxy(i,0); printf("#"); gotoxy(i,frame_width-1); printf("#"); } gotoxy(2,frame_width+3); if(n=='1') printf("Difficulty: easy"); else if(n=='2') printf("Difficulty: middle"); else if(n=='3') printf("Difficulty: difficult"); else printf("Welcome to the Devil's difficulty"); gotoxy(4,frame_width+3); printf("UP: w"); gotoxy(6,frame_width+3); printf("DOWN: s"); gotoxy(8,frame_width+3); printf("LEFT: a"); gotoxy(10,frame_width+3); printf("RIGHT:d"); gotoxy(12,frame_width+3); printf("Your score:%d",score); gotoxy(28,frame_width+3); printf("Made by Zhao Hejie"); } /*食物*/ void update_food() { if(snake.x[0]food.x&&snake.y[0]food.y)//吃到食物 { score+=10; gotoxy(12,frame_width+3); printf("Your score:%d",score); srand(time(NULL)); /*以下是更新食物的代码,里面排除了 食物与蛇重合的情况,读者可以参考以 下代码完成对上述bug的改进*/ int flag=1;//标记变量 do { food.x=rand()%(frame_height-2)+1; food.y=rand()%(frame_width-2)+1;//在框内 for(i=0; i<snake.len; i++) { if(food.xsnake.x[i]&&food.ysnake.y[i]) { flag=0;//有重合 break; } } } while(flag0); /*打印食物*/ gotoxy(food.x,food.y); printf("$"); snake.len++; grow=1;//表明长了,在move_snake函数中有用到 } } /*移动蛇*/ void move_snake() { while(kbhit())//键盘有输入 { ch=getch(); } if(!grow)//没有长 { gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]); printf(" ");//走了,在数组的最后打印空格,清除原有的蛇尾 } for(k=snake.len-1; k>0; k--)//更新蛇的坐标,除了蛇头,其余位置继承上一个点的坐标 { snake.x[k]=snake.x[k-1]; snake.y[k]=snake.y[k-1];//移动位置 } switch(ch)//改变方向 { case UP: { if(stateDOWN)//如果此时方向向下,输入向上的作用要被无视 { snake.x[0]++; break; } else { snake.x[0]--; state=UP;//其余的改变状态为向上 break; } } case DOWN: { if(stateUP) { snake.x[0]--; break; } else { snake.x[0]++; state=DOWN; break; } } case LEFT: { if(stateRIGHT) { snake.y[0]++; break; } else { snake.y[0]--; state=LEFT; break; } } case RIGHT: { if(stateLEFT) { snake.y[0]--; break; } else { snake.y[0]++; state=RIGHT; break; } } /*摁其余键,保持原有状态*/ default: { if(stateDOWN) { snake.x[0]++; break; } else if(stateUP) { snake.x[0]--; break; } else if(stateLEFT) { snake.y[0]--; break; } else if(state==RIGHT) { snake.y[0]++; break; } } } gotoxy(snake.x[0],snake.y[0]); printf("@");//打印蛇头 grow=0;//初始成长状态为0 gotoxy(frame_height,0);//光标移动到地图左下角下方 } /*存活状态*/ int alive(void) { if(snake.x[0]==0||snake.x[0]==frame_height-1||snake.y[0]==0||snake.y[0]==frame_width-1)//撞墙 return 0; for(k=1; k<snake.len; k++) //咬到自己 { if(snake.x[0]==snake.x[k]&&snake.y[0]==snake.y[k]) return 0; } return 1; } /*加速*/ /*speed越大,蛇的速度越小*/ void get_speed() { if(snake.len<=6) snake.speed=sp; else if(snake.len<=10) snake.speed=sp-20; else if(snake.len<=20) snake.speed=sp-50; else if(snake.len<=30) snake.speed=sp-60; else snake.speed=sp-70; } /*移动光标*/ void gotoxy(int x,int y) { HANDLE hout; COORD cor; /* typedef struct _COORD { SHORT X; // horizontal coordinate SHORT Y; // vertical coordinate } COORD; 用该结构体来储存坐标 */ hout=GetStdHandle(STD_OUTPUT_HANDLE);//从标准输出设备中取得一个句柄 /*这其中x,y的赋值对象要注意,不懂的好好想想*/ cor.X=y; cor.Y=x; SetConsoleCursorPosition(hout,cor);//定位光标的函数 }[](https://)

        • 0
          @ 2024-5-25 12:04:42
          #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <time.h> #include <conio.h>  #define frame\_height 30//地图尺寸 #define frame\_width 50 #define UP 'w'//移动 #define DOWN 's' #define LEFT 'a' #define RIGHT 'd'  int i,j,k,sp,score; char ch=UP,state=UP,choo,n;//初始化方向 int grow=0;  struct Food//食物 {          int x;//横坐标     int y;//纵坐标 } food;  struct Snake//蛇 {          /\*用数组储存蛇的每一部分的坐标\*/     int x[100];     int y[100];     int len;//长度     int speed;//速度 } snake;  void map(void);//地图 void update\_food(void);//更新食物 void move\_snake(void);//蛇的移动 int alive(void);//判断蛇是否死亡 void get\_speed(void);//更新速度 void gotoxy(int x,int y);//移动光标,进行游戏界面的打印   int main() {          do     {              score=0;//初始化分数为0         /\*让用户进行难度选择,有彩蛋\*/         printf("Choose the degree of difficulty:\\n1:easy\\t2:middle 3:difficult\\n");         n=getch();         switch(n)         {              case '1':         {                  sp=300;             break;         }         case '2':         {                  sp=230;             break;         }         case '3':         {                  sp=180;             break;         }         default:         {                  printf("Congratulations!Welcome to Devil's difficulty\\n");             sp=120;             break;         }         }         system("cls");//每次新一局游戏先清屏,包含在<stdlib.h>         map();//打印地图         /\*开始游戏\*/         while(1)         {                  update\_food();//生产食物             get\_speed();//获取速度             move\_snake();//移动             Sleep(snake.speed);//延时函数,speed数值越大延时越长             if(!(alive()))//判断蛇是否死亡             {                      break;//死亡则退出循环             }         }         printf("Game Over!\\n");         printf("1:Restart\\t2:exit");         choo=getch();     }     while(choo=='1');     return 0; }  void map() {          srand(time(NULL));     /\*打印第一个食物\*/     /\*Attention!此处留了一个bug:可能食物 的位置与初始的蛇重合,然后食物就会消 失,读者可以加以改进\*/     food.x=rand()%(frame\_height-2)+1;     food.y=rand()%(frame\_width-2)+1;//在框内     gotoxy(food.x,food.y);//把光标移动到该坐标     printf("\$");//打印食物      /\*snake的初始化\*/     snake.x[0]=frame\_height/2;     snake.y[0]=frame\_width/2;     gotoxy(snake.x[0],snake.y[0]);     printf("@");     snake.len=3;     snake.speed=200;     for(k=1; k<snake.len; k++)     {              snake.x[k]=snake.x[k-1]+1;         snake.y[k]=snake.y[k-1];         gotoxy(snake.x[k],snake.y[k]);         printf("@");     }     /\*墙壁\*/     for(j=0; j<frame\_width; j++)     {              gotoxy(0,j);         printf("#");         gotoxy(frame\_height-1,j);         printf("#");     }     for(i=0; i<frame\_height-1; i++)     {              gotoxy(i,0);         printf("#");         gotoxy(i,frame\_width-1);         printf("#");     }     gotoxy(2,frame\_width+3);     if(n=='1') printf("Difficulty: easy");     else if(n=='2') printf("Difficulty: middle");     else if(n=='3') printf("Difficulty: difficult");     else printf("Welcome to the Devil's difficulty");     gotoxy(4,frame\_width+3);     printf("UP: w");     gotoxy(6,frame\_width+3);     printf("DOWN: s");     gotoxy(8,frame\_width+3);     printf("LEFT: a");     gotoxy(10,frame\_width+3);     printf("RIGHT:d");     gotoxy(12,frame\_width+3);     printf("Your score:%d",score);     gotoxy(28,frame\_width+3);     printf("Made by Zhao Hejie"); } /\*食物\*/ void update\_food() {          if(snake.x[0]==food.x&&snake.y[0]==food.y)//吃到食物     {              score+=10;         gotoxy(12,frame\_width+3);         printf("Your score:%d",score);         srand(time(NULL));         /\*以下是更新食物的代码,里面排除了 食物与蛇重合的情况,读者可以参考以 下代码完成对上述bug的改进\*/         int flag=1;//标记变量         do         {              food.x=rand()%(frame\_height-2)+1;         food.y=rand()%(frame\_width-2)+1;//在框内         for(i=0; i<snake.len; i++)         {                  if(food.x==snake.x[i]&&food.y==snake.y[i])             {                      flag=0;//有重合                 break;             }         }         }         while(flag==0);         /\*打印食物\*/         gotoxy(food.x,food.y);         printf("\$");         snake.len++;         grow=1;//表明长了,在move\_snake函数中有用到     } } /\*移动蛇\*/ void move\_snake() {          while(kbhit())//键盘有输入     {              ch=getch();     }     if(!grow)//没有长     {              gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]);         printf(" ");//走了,在数组的最后打印空格,清除原有的蛇尾     }     for(k=snake.len-1; k>0; k--)//更新蛇的坐标,除了蛇头,其余位置继承上一个点的坐标     {              snake.x[k]=snake.x[k-1];         snake.y[k]=snake.y[k-1];//移动位置     }     switch(ch)//改变方向     {          case UP:     {              if(state==DOWN)//如果此时方向向下,输入向上的作用要被无视         {                  snake.x[0]++;             break;         }         else         {                  snake.x[0]--;             state=UP;//其余的改变状态为向上             break;         }     }     case DOWN:     {              if(state==UP)         {                  snake.x[0]--;             break;         }         else         {                  snake.x[0]++;             state=DOWN;             break;         }     }     case LEFT:     {              if(state==RIGHT)         {                  snake.y[0]++;             break;         }         else         {                  snake.y[0]--;             state=LEFT;             break;         }     }     case RIGHT:     {              if(state==LEFT)         {                  snake.y[0]--;             break;         }         else         {                  snake.y[0]++;             state=RIGHT;             break;         }     }     /\*摁其余键,保持原有状态\*/     default:     {              if(state==DOWN)         {                  snake.x[0]++;             break;         }         else if(state==UP)         {                  snake.x[0]--;             break;         }         else if(state==LEFT)         {                  snake.y[0]--;             break;         }         else if(state==RIGHT)         {                  snake.y[0]++;             break;         }      }     }     gotoxy(snake.x[0],snake.y[0]);     printf("@");//打印蛇头     grow=0;//初始成长状态为0     gotoxy(frame\_height,0);//光标移动到地图左下角下方 } /\*存活状态\*/ int alive(void) {          if(snake.x[0]==0||snake.x[0]==frame\_height-1||snake.y[0]==0||snake.y[0]==frame\_width-1)//撞墙         return 0;     for(k=1; k<snake.len; k++) //咬到自己     {              if(snake.x[0]==snake.x[k]&&snake.y[0]==snake.y[k])             return 0;     }     return 1; } /\*加速\*/ /\*speed越大,蛇的速度越小\*/ void get\_speed() {          if(snake.len<=6)         snake.speed=sp;     else if(snake.len<=10)         snake.speed=sp-20;     else if(snake.len<=20)         snake.speed=sp-50;     else if(snake.len<=30)         snake.speed=sp-60;     else         snake.speed=sp-70; } /\*移动光标\*/ void gotoxy(int x,int y) {          HANDLE hout;     COORD cor;     /\* typedef struct \_COORD { SHORT X; // horizontal coordinate SHORT Y; // vertical coordinate } COORD; 用该结构体来储存坐标 \*/     hout=GetStdHandle(STD\_OUTPUT\_HANDLE);//从标准输出设备中取得一个句柄     /\*这其中x,y的赋值对象要注意,不懂的好好想想\*/     cor.X=y;     cor.Y=x;     SetConsoleCursorPosition(hout,cor);//定位光标的函数 }
          
          • 1

          信息

          ID
          10
          时间
          1000ms
          内存
          64MiB
          难度
          5
          标签
          递交数
          625
          已通过
          258
          上传者