Untitled
unknown
plain_text
8 months ago
2.5 kB
11
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