Untitled
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