小红正在玩贪吃蛇游戏。游戏中小红需要控制蛇向上、下、左、右走,当蛇吃到食物时,蛇的身体会变长。当蛇撞到自己的身体时,游戏结束。当指令执行完毕时,游戏也结束。 本游戏和传统贪吃蛇不同的是,初始地图上就会存在所有的食物,吃完食物后也不能增加新的食物! 地图是无穷大的,因此没有撞墙这个说法。 假设蛇初始的坐标为,初始长度是1(即只占用这一个坐标)。 ‘W’指令代表向上移动,坐标由(x,y)移动到(x,y+1)。 ‘S’指令代表向下移动,坐标由(x,y)移动到(x,y-1)。 ‘A’指令代表向左移动,坐标由(x,y)移动到(x-1,y)。 ‘D’指令代表向右移动,坐标由(x,y)移动到(x+1,y)。 小红想知道,游戏结束的时候,蛇的长度是多少?

区块链毕设网qklbishe.com为您提供问题的解答

小红正在玩贪吃蛇游戏。游戏中小红需要控制蛇向上、下、左、右走,当蛇吃到食物时,蛇的身体会变长。当蛇撞到自己的身体时,游戏结束。当指令执行完毕时,游戏也结束。

本游戏和传统贪吃蛇不同的是,初始地图上就会存在所有的食物,吃完食物后也不能增加新的食物!
地图是无穷大的,因此没有撞墙这个说法。

假设蛇初始的坐标为小红正在玩贪吃蛇游戏。游戏中小红需要控制蛇向上、下、左、右走,当蛇吃到食物时,蛇的身体会变长。当蛇撞到自己的身体时,游戏结束。当指令执行完毕时,游戏也结束。    	本游戏和传统贪吃蛇不同的是,初始地图上就会存在所有的食物,吃完食物后也不能增加新的食物!   	地图是无穷大的,因此没有撞墙这个说法。    假设蛇初始的坐标为,初始长度是1(即只占用这一个坐标)。   'W'指令代表向上移动,坐标由(x,y)移动到(x,y+1)。   'S'指令代表向下移动,坐标由(x,y)移动到(x,y-1)。   'A'指令代表向左移动,坐标由(x,y)移动到(x-1,y)。   'D'指令代表向右移动,坐标由(x,y)移动到(x+1,y)。   小红想知道,游戏结束的时候,蛇的长度是多少?,初始长度是1(即只占用小红正在玩贪吃蛇游戏。游戏中小红需要控制蛇向上、下、左、右走,当蛇吃到食物时,蛇的身体会变长。当蛇撞到自己的身体时,游戏结束。当指令执行完毕时,游戏也结束。    	本游戏和传统贪吃蛇不同的是,初始地图上就会存在所有的食物,吃完食物后也不能增加新的食物!   	地图是无穷大的,因此没有撞墙这个说法。    假设蛇初始的坐标为,初始长度是1(即只占用这一个坐标)。   'W'指令代表向上移动,坐标由(x,y)移动到(x,y+1)。   'S'指令代表向下移动,坐标由(x,y)移动到(x,y-1)。   'A'指令代表向左移动,坐标由(x,y)移动到(x-1,y)。   'D'指令代表向右移动,坐标由(x,y)移动到(x+1,y)。   小红想知道,游戏结束的时候,蛇的长度是多少?这一个坐标)。
‘W’指令代表向上移动,坐标由(x,y)移动到(x,y+1)。
‘S’指令代表向下移动,坐标由(x,y)移动到(x,y-1)。
‘A’指令代表向左移动,坐标由(x,y)移动到(x-1,y)。
‘D’指令代表向右移动,坐标由(x,y)移动到(x+1,y)。
小红想知道,游戏结束的时候,蛇的长度是多少?

n = int(input()) ops = input() m = int(input()) food_pos = set() for _ in range(m):     i, j = list(map(int, input().split()))     food_pos.add((i,j))  body_pos = [(0,0)] for i in range(n):     op = ops[i]     if op == 'W':         x, y = body_pos[-1][0], body_pos[-1][1]+1     elif op == 'S':         x, y = body_pos[-1][0], body_pos[-1][1]-1     elif op == 'A':         x, y = body_pos[-1][0]-1, body_pos[-1][1]     else:         x, y = body_pos[-1][0]+1, body_pos[-1][1]      if (x,y) in body_pos[1:]:         break     if (x,y) in food_pos:         food_pos.remove((x,y))     else:         body_pos.pop(0)     body_pos.append((x,y))           print(len(body_pos))   

50:53
本题旨在模拟贪吃蛇游戏,需要维护贪吃蛇长度。由于贪吃蛇的运动可以简化为头到某个坐标,尾巴离开某个坐标,因此考虑使用队列维护。以下为本题的解答:
import java.util.*;  public class Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         String l1 = in.nextLine();         int num = Integer.parseInt(l1);         String op = in.nextLine();         String l3 = in.nextLine();         int foodnum = Integer.parseInt(l3);         Vector<String> food = new Vector<>(foodnum);         for(int i=0;i<foodnum;i++){             String pos = in.nextLine();             String p[] = pos.split(" ");             food.add((Integer.parseInt(p[0]))+"-"+((Integer.parseInt(p[1]))));         }         int x=0,y=0,res=0;         Deque<String> snake = new ArrayDeque<>(num);         snake.add("0-0");         for(int i=0;i<num;i++){             switch (op.charAt(i)){                 case 'W':                     y+=1;                     if(food.contains(x+"-"+y)) {                         snake.add(x+"-"+y);                         food.remove(x+"-"+y);                     }                     else {                         snake.pop();                         if(snake.contains(x+"-"+y)){                             res=1;                             i=num-1;                         }else{                             snake.add(x+"-"+y);                         }                     }                     break;                 case 'A':                     x-=1;                     if(food.contains(x+"-"+y)) {                         snake.add(x+"-"+y);                         food.remove(x+"-"+y);                     }                     else {                         snake.pop();                         if(snake.contains(x+"-"+y)){                             res=1;                             i=num-1;                         }else{                             snake.add(x+"-"+y);                         }                     }                     break;                 case 'S':                     y-=1;                     if(food.contains(x+"-"+y)) {                         snake.add(x+"-"+y);                         food.remove(x+"-"+y);                     }                     else {                         snake.pop();                         if(snake.contains(x+"-"+y)){                             res=1;                             i=num-1;                         }else{                             snake.add(x+"-"+y);                         }                     }                     break;                 case 'D':                     x+=1;                     if(food.contains(x+"-"+y)) {                         snake.add(x+"-"+y);                         food.remove(x+"-"+y);                     }                     else {                         snake.pop();                         if(snake.contains(x+"-"+y)){                             res=1;                             i=num-1;                         }else{                             snake.add(x+"-"+y);                         }                     }                     break;             }         }         res += snake.size();         System.out.println(res);     } }

值得注意的有以下两个点:

1.食物被吃后需要更新食物状态
2.要搞清楚蛇的运动分解,搞清先后顺序

45:54

以上就是关于问题小红正在玩贪吃蛇游戏。游戏中小红需要控制蛇向上、下、左、右走,当蛇吃到食物时,蛇的身体会变长。当蛇撞到自己的身体时,游戏结束。当指令执行完毕时,游戏也结束。
本游戏和传统贪吃蛇不同的是,初始地图上就会存在所有的食物,吃完食物后也不能增加新的食物! 地图是无穷大的,因此没有撞墙这个说法。
假设蛇初始的坐标为,初始长度是1(即只占用这一个坐标)。
‘W’指令代表向上移动,坐标由(x,y)移动到(x,y+1)。
‘S’指令代表向下移动,坐标由(x,y)移动到(x,y-1)。
‘A’指令代表向左移动,坐标由(x,y)移动到(x-1,y)。
‘D’指令代表向右移动,坐标由(x,y)移动到(x+1,y)。
小红想知道,游戏结束的时候,蛇的长度是多少?的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小红正在玩贪吃蛇游戏。游戏中小红需要控制蛇向上、下、左、右走,当蛇吃到食物时,蛇的身体会变长。当蛇撞到自己的身体时,游戏结束。当指令执行完毕时,游戏也结束。 本游戏和传统贪吃蛇不同的是,初始地图上就会存在所有的食物,吃完食物后也不能增加新的食物! 地图是无穷大的,因此没有撞墙这个说法。 假设蛇初始的坐标为,初始长度是1(即只占用这一个坐标)。 ‘W’指令代表向上移动,坐标由(x,y)移动到(x,y+1)。 ‘S’指令代表向下移动,坐标由(x,y)移动到(x,y-1)。 ‘A’指令代表向左移动,坐标由(x,y)移动到(x-1,y)。 ‘D’指令代表向右移动,坐标由(x,y)移动到(x+1,y)。 小红想知道,游戏结束的时候,蛇的长度是多少?