Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
黛琳ghz
2048
提交
a831baed
2048
项目概览
黛琳ghz
/
2048
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
2048
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a831baed
编写于
3月 14, 2014
作者:
G
Gabriele Cirulli
浏览文件
操作
浏览文件
下载
差异文件
merge infinite game
上级
2bf48efe
c329f357
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
57 addition
and
6 deletion
+57
-6
index.html
index.html
+1
-0
js/game_manager.js
js/game_manager.js
+21
-2
js/html_actuator.js
js/html_actuator.js
+13
-3
js/keyboard_input_manager.js
js/keyboard_input_manager.js
+10
-1
style/main.css
style/main.css
+4
-0
style/main.scss
style/main.scss
+8
-0
未找到文件。
index.html
浏览文件 @
a831baed
...
...
@@ -28,6 +28,7 @@
<div
class=
"game-message"
>
<p></p>
<div
class=
"lower"
>
<a
class=
"keep-playing-button"
>
Keep playing
</a>
<a
class=
"retry-button"
>
Try again
</a>
</div>
</div>
...
...
js/game_manager.js
浏览文件 @
a831baed
...
...
@@ -8,6 +8,7 @@ function GameManager(size, InputManager, Actuator, ScoreManager) {
this
.
inputManager
.
on
(
"
move
"
,
this
.
move
.
bind
(
this
));
this
.
inputManager
.
on
(
"
restart
"
,
this
.
restart
.
bind
(
this
));
this
.
inputManager
.
on
(
"
keepPlaying
"
,
this
.
keepPlaying
.
bind
(
this
));
this
.
setup
();
}
...
...
@@ -18,6 +19,22 @@ GameManager.prototype.restart = function () {
this
.
setup
();
};
// Keep playing after winning
GameManager
.
prototype
.
keepPlaying
=
function
()
{
this
.
keepPlaying
=
true
;
this
.
actuator
.
keepPlaying
();
};
GameManager
.
prototype
.
isGameOver
=
function
()
{
if
(
this
.
over
||
(
this
.
won
&&
!
this
.
keepPlaying
)
)
{
return
true
;
}
else
{
return
false
;
}
}
// Set up the game
GameManager
.
prototype
.
setup
=
function
()
{
this
.
grid
=
new
Grid
(
this
.
size
);
...
...
@@ -25,6 +42,7 @@ GameManager.prototype.setup = function () {
this
.
score
=
0
;
this
.
over
=
false
;
this
.
won
=
false
;
this
.
keepPlaying
=
false
;
// Add the initial tiles
this
.
addStartTiles
();
...
...
@@ -60,7 +78,8 @@ GameManager.prototype.actuate = function () {
score
:
this
.
score
,
over
:
this
.
over
,
won
:
this
.
won
,
bestScore
:
this
.
scoreManager
.
get
()
bestScore
:
this
.
scoreManager
.
get
(),
gameOver
:
this
.
isGameOver
()
});
};
...
...
@@ -87,7 +106,7 @@ GameManager.prototype.move = function (direction) {
// 0: up, 1: right, 2:down, 3: left
var
self
=
this
;
if
(
this
.
over
||
this
.
won
)
return
;
// Don't do anything if the game's over
if
(
this
.
isGameOver
()
)
return
;
// Don't do anything if the game's over
var
cell
,
tile
;
...
...
js/html_actuator.js
浏览文件 @
a831baed
...
...
@@ -24,8 +24,11 @@ HTMLActuator.prototype.actuate = function (grid, metadata) {
self
.
updateScore
(
metadata
.
score
);
self
.
updateBestScore
(
metadata
.
bestScore
);
if
(
metadata
.
over
)
self
.
message
(
false
);
// You lose
if
(
metadata
.
won
)
self
.
message
(
true
);
// You win!
if
(
metadata
.
gameOver
)
{
if
(
metadata
.
over
)
self
.
message
(
false
);
// You lose
else
if
(
metadata
.
won
)
self
.
message
(
true
);
// You win!
}
});
};
...
...
@@ -33,6 +36,10 @@ HTMLActuator.prototype.restart = function () {
this
.
clearMessage
();
};
HTMLActuator
.
prototype
.
keepPlaying
=
function
()
{
this
.
clearMessage
();
};
HTMLActuator
.
prototype
.
clearContainer
=
function
(
container
)
{
while
(
container
.
firstChild
)
{
container
.
removeChild
(
container
.
firstChild
);
...
...
@@ -45,10 +52,13 @@ HTMLActuator.prototype.addTile = function (tile) {
var
wrapper
=
document
.
createElement
(
"
div
"
);
var
inner
=
document
.
createElement
(
"
div
"
);
var
position
=
tile
.
previousPosition
||
{
x
:
tile
.
x
,
y
:
tile
.
y
};
positionClass
=
this
.
positionClass
(
position
);
var
positionClass
=
this
.
positionClass
(
position
);
// We can't use classlist because it somehow glitches when replacing classes
var
classes
=
[
"
tile
"
,
"
tile-
"
+
tile
.
value
,
positionClass
];
if
(
tile
.
value
>
2048
)
classes
.
push
(
"
tile-gold
"
);
this
.
applyClasses
(
wrapper
,
classes
);
inner
.
classList
.
add
(
"
tile-inner
"
);
...
...
js/keyboard_input_manager.js
浏览文件 @
a831baed
...
...
@@ -53,10 +53,14 @@ KeyboardInputManager.prototype.listen = function () {
}
});
var
retry
=
document
.
getElementsByClassName
(
"
retry-button
"
)[
0
]
;
var
retry
=
document
.
querySelector
(
"
.retry-button
"
)
;
retry
.
addEventListener
(
"
click
"
,
this
.
restart
.
bind
(
this
));
retry
.
addEventListener
(
"
touchend
"
,
this
.
restart
.
bind
(
this
));
var
keepPlaying
=
document
.
querySelector
(
"
.keep-playing-button
"
);
keepPlaying
.
addEventListener
(
"
click
"
,
this
.
keepPlaying
.
bind
(
this
));
keepPlaying
.
addEventListener
(
"
touchend
"
,
this
.
keepPlaying
.
bind
(
this
));
// Listen to swipe events
var
touchStartClientX
,
touchStartClientY
;
var
gameContainer
=
document
.
getElementsByClassName
(
"
game-container
"
)[
0
];
...
...
@@ -93,3 +97,8 @@ KeyboardInputManager.prototype.restart = function (event) {
event
.
preventDefault
();
this
.
emit
(
"
restart
"
);
};
KeyboardInputManager
.
prototype
.
keepPlaying
=
function
(
event
)
{
event
.
preventDefault
();
this
.
emit
(
"
keepPlaying
"
);
};
style/main.css
浏览文件 @
a831baed
...
...
@@ -193,9 +193,13 @@ hr {
height
:
40px
;
line-height
:
42px
;
margin-left
:
9px
;
}
.game-container
.game-message
a
.keep-playing-button
{
display
:
none
;
}
.game-container
.game-message.game-won
{
background
:
rgba
(
237
,
194
,
46
,
0.5
);
color
:
#f9f6f2
;
}
.game-container
.game-message.game-won
a
.keep-playing-button
{
display
:
inline-block
;
}
.game-container
.game-message.game-won
,
.game-container
.game-message.game-over
{
display
:
block
;
}
...
...
style/main.scss
浏览文件 @
a831baed
...
...
@@ -218,6 +218,10 @@ hr {
@include
button
;
margin-left
:
9px
;
// margin-top: 59px;
&
.keep-playing-button
{
display
:
none
;
}
}
@include
animation
(
fade-in
800ms
ease
$transition-speed
*
12
);
...
...
@@ -226,6 +230,10 @@ hr {
&
.game-won
{
background
:
rgba
(
$tile-gold-color
,
.5
);
color
:
$bright-text-color
;
a
.keep-playing-button
{
display
:
inline-block
;
}
}
&
.game-won
,
&
.game-over
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录