Untitled

 avatar
unknown
plain_text
9 days ago
2.5 kB
6
Indexable
#include "function.h"
#include <iostream>
using namespace std;
void Scene::update(int &x, int y) {

    int flag = 1;
    for(int j = y ; j <= y+2 ; j++)
    {
        if(j > col) continue;
        for(int i = x+2 ; i >= x ; i--)
        {
            if(i > row) continue;
            if(grid[i][j] == '*')
            {
                if(i == row || grid[i+1][j] == '#')
                {
                    flag = 0;
                    break;
                }
            }
        }
        if(!flag) break;
    }
    if(flag)
    {

        for(int i = x+2 ; i >= x ; i--)
        {
            for(int j = y ; j <= y+2 ; j++)
            {
                if(grid[i][j] == '*') swap(grid[i][j] , grid[i+1][j]);
            }
        }
        //cout << "#" << endl;
        x = x + 1;
    }
    //print();
    //cout << endl;
}

void Scene::moveBlock(int x, int &y, char op) {
    if(op == 'R')
    {
        int flag = 1;
        for(int i = x ; i <= x+2 ; i++)
        {
            if(i > row) continue;
            for(int j = y+2 ; j <= y ; j--)
            {
                if(j > col) continue;
                if(grid[i][j] == '*')
                {
                    if(j == col || grid[i][j+1] == '#') flag = 0;
                }
            }
            if(!flag) break;
        }
        if(flag)
        {
            for(int j = y+2 ; j >= y ; j--)
            {
                for(int i = x ; i <= x+2 ; i++)
                {
                    if(grid[i][j] == '*') swap(grid[i][j] , grid[i][j+1]);
                }
            }
            y = y + 1;
        }
    }
    else if(op == 'L')
    {
        int flag = 1;
        for(int i = x ; i <= x+2 ; i++)
        {
            if(i > row) continue;
            for(int j = y ; j <= y+2 ; j++)
            {
                if(j < 1) continue;
                if(grid[i][j] == '*')
                {
                    if(j == 1 || grid[i][j-1] == '#') flag = 0;
                }
            }
            if(!flag) break;
        }
        if(flag)
        {
            for(int j = y ; j <= y+2 ; j++)
            {
                for(int i = x ; i <= x+2 ; i++)
                {
                    if(grid[i][j] == '*') swap(grid[i][j] , grid[i][j-1]);
                }
            }
            y = y - 1;
        }
    }
    //print();
    //cout << endl;
}
/*
.........
.........
.........
.........
..##.....
...#.....
#..##....
######...
2 4
***
.*.
.*.
4
R
L
D
L
*/
Editor is loading...
Leave a Comment