驾驶卡丁车 模拟,迷宫(女赛)

在这里插入图片描述
思路 :

  • 起点记录后改为普通点
  • 给迷宫周围加一圈’#’
  • 速度作用是循环,如果循环内碰撞,就return了
  • 判断碰撞 :先是越界,还有’#’,然后就是斜向的判断了
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <unordered_set>
 
using namespace std;

const int N = 55;

int n, m, q;
char g[N][N];
int sx, sy;
int v, dir;

int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};
int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};

bool move(char ch)
{
    if (ch == 'L') dir = (dir + 7) % 8;
    if (ch == 'R') dir = (dir + 1) % 8;
    if (ch == 'U') v ++ ;
    if (ch == 'D') v = max(v - 1, 0);
    
    for (int i = 1; i <= v; i ++ )
    {
        int nx = sx + dx[dir], ny = sy + dy[dir];
        
        if (nx < 1 || nx > n || ny < 1 || ny > m || g[nx][ny] == '#') return false;
        
        if (dir == 1 && g[sx - 1][sy] == '#' && g[sx][sy + 1] == '#') return false;
        if (dir == 3 && g[sx + 1][sy] == '#' && g[sx][sy + 1] == '#') return false;
        if (dir == 5 && g[sx + 1][sy] == '#' && g[sx][sy - 1] == '#') return false;
        if (dir == 7 && g[sx - 1][sy] == '#' && g[sx][sy - 1] == '#') return false;
        
        sx = nx, sy = ny;
    }
    
    return true;
}
 
int main()
{
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    
    cin >> n >> m;
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= m; j ++ )
        {
            cin >> g[i][j];
            if (g[i][j] == '*') sx = i, sy = j, g[i][j] = '.';
        }
    
    cin >> q;
    for (int i = 1; i <= q; i ++ )
    {
        char ch;
        cin >> ch;
        if (move(ch)) cout << sx << ' ' << sy << endl;
        else
        {
            v = 0;
            cout << "Crash! " << sx << ' ' << sy << endl;
        }
    }
    
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
跑跑卡丁车游戏是一款3D赛车游戏,实现起来比较复杂,需要使用到一些游戏引擎和图形库。以下提供一种基于Pygame实现的简单跑跑卡丁车游戏的实现方法。 首先,需要安装Pygame库,可以使用以下命令进行安装: ``` pip install pygame ``` 接下来,创建一个Python文件,导入Pygame库并初始化: ```python import pygame pygame.init() ``` 然后,设置窗口大小和标题: ```python WINDOW_WIDTH = 800 WINDOW_HEIGHT = 600 window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption('跑跑卡丁车') ``` 接下来,加载游戏资源,包括赛道、卡丁车、音效等: ```python track_image = pygame.image.load('track.png').convert_alpha() car_image = pygame.image.load('car.png').convert_alpha() engine_sound = pygame.mixer.Sound('engine.wav') ``` 然后,定义一些常量,如卡丁车速度、转向角度等: ```python CAR_SPEED = 5 CAR_TURN_ANGLE = 5 ``` 接下来,创建一个Car类表示卡丁车,并实现它的移动和绘制方法: ```python class Car: def __init__(self, x, y, image): self.x = x self.y = y self.image = image def move(self, dx, dy): self.x += dx self.y += dy def draw(self, surface): surface.blit(self.image, (self.x, self.y)) ``` 然后,创建一个Track类表示赛道,并实现它的绘制方法: ```python class Track: def __init__(self, image): self.image = image self.x = 0 self.y = 0 def draw(self, surface): surface.blit(self.image, (self.x, self.y)) ``` 接下来,定义游戏循环,包括事件处理、卡丁车移动和绘制、赛道绘制等: ```python clock = pygame.time.Clock() car = Car(400, 300, car_image) track = Track(track_image) engine_sound.play() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() keys = pygame.key.get_pressed() if keys[pygame.K_UP]: car.move(0, -CAR_SPEED) if keys[pygame.K_DOWN]: car.move(0, CAR_SPEED) if keys[pygame.K_LEFT]: car.move(-CAR_SPEED, 0) if keys[pygame.K_RIGHT]: car.move(CAR_SPEED, 0) window.fill((255, 255, 255)) track.draw(window) car.draw(window) pygame.display.update() clock.tick(60) ``` 最后,运行程序,即可看到简单的跑跑卡丁车游戏。 这只是一个简单的实现方法,如果要实现更复杂的跑跑卡丁车游戏,需要使用到更多的游戏引擎和图形库,并进行更多的开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值