java连连看程序中的一部分,请求牛人帮忙注释一下
privatevoiddelete(Pointp1,finalPointp2,booleanbDelete){ArrayList<Point>points=newArra...
private void delete(Point p1,final Point p2 , boolean bDelete){
ArrayList<Point> points=new ArrayList<Point>();
if(corner1==null){
points.add(p1);
points.add(p2);
}
else if(corner2==null){
points.add(p1);
points.add(corner1);
points.add(p2);
}
else{
if(p1.x!=corner1.x&&p1.y!=corner1.y){
Point pt=corner1;
corner1=corner2;
corner2=pt;
}
points.add(p1);
points.add(corner1);
points.add(corner2);
points.add(p2);
}
if(bDelete){
delete(p1); delete(p2);
}
notifyEffect(points);
}
public int getCols() {
return cols;
}
private ArrayList<Point> getHSpaces(Point p,Point pg){
ArrayList<Point> ps=new ArrayList<Point>();
//左
for(int dif=1; ;dif++){
int col=p.y-dif;
int row=p.x;
if(col<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
//右
for(int dif=1; ;dif++){
int col=p.y+dif;
int row=p.x;
if(col>=cols||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
}
public int[][] getMaps(){
return data;
}
public int getRows() {
return rows;
}
public Point getSltMatrix() {
return sltMatrix;
}
/*
* p 原点
*纵向空白点(包括与原点等值的点)
*/
private ArrayList<Point> getVSpaces(Point p,Point pg)//获得脚步
{
ArrayList<Point> ps=new ArrayList<Point>();
//左
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x-dif;
if(row<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
//右
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x+dif;
if(row>=rows||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
} 展开
ArrayList<Point> points=new ArrayList<Point>();
if(corner1==null){
points.add(p1);
points.add(p2);
}
else if(corner2==null){
points.add(p1);
points.add(corner1);
points.add(p2);
}
else{
if(p1.x!=corner1.x&&p1.y!=corner1.y){
Point pt=corner1;
corner1=corner2;
corner2=pt;
}
points.add(p1);
points.add(corner1);
points.add(corner2);
points.add(p2);
}
if(bDelete){
delete(p1); delete(p2);
}
notifyEffect(points);
}
public int getCols() {
return cols;
}
private ArrayList<Point> getHSpaces(Point p,Point pg){
ArrayList<Point> ps=new ArrayList<Point>();
//左
for(int dif=1; ;dif++){
int col=p.y-dif;
int row=p.x;
if(col<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
//右
for(int dif=1; ;dif++){
int col=p.y+dif;
int row=p.x;
if(col>=cols||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
}
public int[][] getMaps(){
return data;
}
public int getRows() {
return rows;
}
public Point getSltMatrix() {
return sltMatrix;
}
/*
* p 原点
*纵向空白点(包括与原点等值的点)
*/
private ArrayList<Point> getVSpaces(Point p,Point pg)//获得脚步
{
ArrayList<Point> ps=new ArrayList<Point>();
//左
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x-dif;
if(row<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
//右
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x+dif;
if(row>=rows||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
} 展开
1个回答
展开全部
//在连连看中,在合适的条件下,点到两个相同的图形时,这两个图形会消失,相当于删除这两个图形
//删除方法
private void delete(Point p1,final Point p2 , boolean bDelete){
//删除位置坐标列表的声明和实例化
ArrayList<Point> points=new ArrayList<Point>();
//当两个图形之间可直线连接时
if(corner1==null){
//将第一个图形加入删除列表
points.add(p1);
//将第二个图形加入删除列表
points.add(p2);
}//当只有一个拐弯时
else if(corner2==null){
points.add(p1);
points.add(corner1);
points.add(p2);
}//当有两个拐弯时
else{
if(p1.x!=corner1.x&&p1.y!=corner1.y){
Point pt=corner1;
corner1=corner2;
corner2=pt;
}
points.add(p1);
//将第一个拐角加入删除列表
points.add(corner1);
points.add(corner2);
points.add(p2);
}
//如果拐角多余两个,撤销选中目标
if(bDelete){
delete(p1); delete(p2);
}
//执行删除事件
notifyEffect(points);
}
//获取图形列数
public int getCols() {
return cols;
}
/*
* p 原点
*横向空白点(包括与原点等值的点)
*/
//横向连线路径获取
private ArrayList<Point> getHSpaces(Point p,Point pg){
ArrayList<Point> ps=new ArrayList<Point>();
//左边空白点坐标
for(int dif=1; ;dif++){
//左边空白点y值
int col=p.y-dif;
//左边空白点x值
int row=p.x;
//如果已经完成或只有一列的情况,返回循环
if(col<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
//将空白点行列添加进数组列表
ps.add(new Point(row,col));
}
//后面的和前面的类似了
//右边空白点坐标
for(int dif=1; ;dif++){
int col=p.y+dif;
int row=p.x;
if(col>=cols||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
}
public int[][] getMaps(){
return data;
}
public int getRows() {
return rows;
}
public Point getSltMatrix() {
return sltMatrix;
}
/*
* p 原点
*纵向空白点(包括与原点等值的点)
*/
//纵向连线路径获取
private ArrayList<Point> getVSpaces(Point p,Point pg)
{
ArrayList<Point> ps=new ArrayList<Point>();
//左
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x-dif;
if(row<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
//右
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x+dif;
if(row>=rows||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
}
//删除方法
private void delete(Point p1,final Point p2 , boolean bDelete){
//删除位置坐标列表的声明和实例化
ArrayList<Point> points=new ArrayList<Point>();
//当两个图形之间可直线连接时
if(corner1==null){
//将第一个图形加入删除列表
points.add(p1);
//将第二个图形加入删除列表
points.add(p2);
}//当只有一个拐弯时
else if(corner2==null){
points.add(p1);
points.add(corner1);
points.add(p2);
}//当有两个拐弯时
else{
if(p1.x!=corner1.x&&p1.y!=corner1.y){
Point pt=corner1;
corner1=corner2;
corner2=pt;
}
points.add(p1);
//将第一个拐角加入删除列表
points.add(corner1);
points.add(corner2);
points.add(p2);
}
//如果拐角多余两个,撤销选中目标
if(bDelete){
delete(p1); delete(p2);
}
//执行删除事件
notifyEffect(points);
}
//获取图形列数
public int getCols() {
return cols;
}
/*
* p 原点
*横向空白点(包括与原点等值的点)
*/
//横向连线路径获取
private ArrayList<Point> getHSpaces(Point p,Point pg){
ArrayList<Point> ps=new ArrayList<Point>();
//左边空白点坐标
for(int dif=1; ;dif++){
//左边空白点y值
int col=p.y-dif;
//左边空白点x值
int row=p.x;
//如果已经完成或只有一列的情况,返回循环
if(col<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
//将空白点行列添加进数组列表
ps.add(new Point(row,col));
}
//后面的和前面的类似了
//右边空白点坐标
for(int dif=1; ;dif++){
int col=p.y+dif;
int row=p.x;
if(col>=cols||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
}
public int[][] getMaps(){
return data;
}
public int getRows() {
return rows;
}
public Point getSltMatrix() {
return sltMatrix;
}
/*
* p 原点
*纵向空白点(包括与原点等值的点)
*/
//纵向连线路径获取
private ArrayList<Point> getVSpaces(Point p,Point pg)
{
ArrayList<Point> ps=new ArrayList<Point>();
//左
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x-dif;
if(row<0||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
//右
for(int dif=1; ;dif++){
int col=p.y;
int row=p.x+dif;
if(row>=rows||(data[row][col]!=0&&!pg.equals(new Point(row,col)))) break;
ps.add(new Point(row,col));
}
return ps;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询