-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBlockConfiguration.java
More file actions
129 lines (125 loc) · 3.13 KB
/
BlockConfiguration.java
File metadata and controls
129 lines (125 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package tetris;
import java.util.ArrayList;
/**
* Factory for block 'configurations'.
* These are the different rotations for given pieces,
* and I figured this would be simpler than rotations.
*
* @author dev
*
*/
public class BlockConfiguration {
public static ArrayList<Block[][]> getForType(char type) {
// types from http://en.wikipedia.org/wiki/Tetris
ArrayList<Block[][]> list;
switch (type) {
case 'i':
list = new ArrayList<Block[][]>(2);
list.add(new Block[][] {
{ new Block() },
{ new Block() },
{ new Block() },
{ new Block() }
});
list.add(new Block[][] {
{ new Block(), new Block(), new Block(), new Block() }
});
return list;
case 's':
list = new ArrayList<Block[][]>(2);
list.add(new Block[][] {
{ null, new Block(), new Block() },
{ new Block(), new Block(), null }
});
list.add(new Block[][] {
{ new Block(), null },
{ new Block(), new Block() },
{ null, new Block() }
});
return list;
case 'z':
list = new ArrayList<Block[][]>(2);
list.add(new Block[][] {
{ new Block(), new Block(), null },
{ null, new Block(), new Block() }
});
list.add(new Block[][] {
{ null, new Block() },
{ new Block(), new Block() },
{ new Block(), null }
});
return list;
case 'o':
list = new ArrayList<Block[][]>(1);
list.add(new Block[][] {
{ new Block(), new Block() },
{ new Block(), new Block() }
});
return list;
case 'l':
list = new ArrayList<Block[][]>(4);
list.add(new Block[][] {
{ new Block(), null },
{ new Block(), null },
{ new Block(), new Block() }
});
list.add(new Block[][] {
{ null, null, new Block() },
{ new Block(), new Block(), new Block() }
});
list.add(new Block[][] {
{ new Block(), new Block() },
{ null, new Block() },
{ null, new Block() }
});
list.add(new Block[][] {
{ new Block(), new Block(), new Block() },
{ new Block(), null, null }
});
return list;
case 'j':
list = new ArrayList<Block[][]>(4);
list.add(new Block[][] {
{ null, new Block() },
{ null, new Block() },
{ new Block(), new Block() }
});
list.add(new Block[][] {
{ new Block(), new Block(), new Block() },
{ null, null, new Block() }
});
list.add(new Block[][] {
{ new Block(), new Block() },
{ new Block(), null },
{ new Block(), null }
});
list.add(new Block[][] {
{ new Block(), null, null },
{ new Block(), new Block(), new Block() }
});
return list;
case 't':
list = new ArrayList<Block[][]>(4);
list.add(new Block[][] {
{ null, new Block(), null },
{ new Block(), new Block(), new Block() }
});
list.add(new Block[][] {
{ new Block(), null },
{ new Block(), new Block() },
{ new Block(), null }
});
list.add(new Block[][] {
{ new Block(), new Block(), new Block() },
{ null, new Block(), null }
});
list.add(new Block[][] {
{ null, new Block() },
{ new Block(), new Block() },
{ null, new Block() }
});
return list;
default: return null;
}
}
}