Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
771 blopes 1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *      http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 */
17
package websocket.snake;
18
 
19
public class Location {
20
 
21
    public int x;
22
    public int y;
23
 
24
    public Location(int x, int y) {
25
        this.x = x;
26
        this.y = y;
27
    }
28
 
29
    public Location getAdjacentLocation(Direction direction) {
30
        switch (direction) {
31
            case NORTH:
32
                return new Location(x, y - SnakeAnnotation.GRID_SIZE);
33
            case SOUTH:
34
                return new Location(x, y + SnakeAnnotation.GRID_SIZE);
35
            case EAST:
36
                return new Location(x + SnakeAnnotation.GRID_SIZE, y);
37
            case WEST:
38
                return new Location(x - SnakeAnnotation.GRID_SIZE, y);
39
            case NONE:
40
                // fall through
41
            default:
42
                return this;
43
        }
44
    }
45
 
46
    @Override
47
    public boolean equals(Object o) {
48
        if (this == o) {
49
            return true;
50
        }
51
        if (o == null || getClass() != o.getClass()) {
52
            return false;
53
        }
54
 
55
        Location location = (Location) o;
56
 
57
        if (x != location.x) {
58
            return false;
59
        }
60
        if (y != location.y) {
61
            return false;
62
        }
63
 
64
        return true;
65
    }
66
 
67
    @Override
68
    public int hashCode() {
69
        int result = x;
70
        result = 31 * result + y;
71
        return result;
72
    }
73
}