純概念·認真就輸了的游戏基本探索画面

/map12.jpg" border="0" alt="Photobucket">
然后再不能旋转的地图出现红色鼠标
点击图进入360'全景图
可以进入的地方出现门口式鼠标
大量的伪3D效果出现在游戏里
應該·游戏的操作方式鼠标为基本设定,键盘对应。操作键初回定有,
设置画面
基础世界观
逻辑推理什么少不了。
(现代+架空+穿越)就很简单的解说下好了。故事会从三个时间观开始,现在,未来,和假象。在某人会在未来消失不代表现在的存在会不明,不会半儿空推理,完全遵守的原则理应之为“戒律”的条文。以玩家现实的时间开始计算,游戏时间30分钟=故事的一天。就算无法解决的案件也是会以带入下一天的时间推进法来计算。
而故事的时间是以剧情第三天开始往后退。完整剧情一共就只有5日,也就是说游戏时间只有150分钟。
环境为大雾,看不清楚就是可以制造认错人的假象。加上灯光的不足使到画面昏暗。在种种的不良因数下使到人类的精神状态不是很好,发生猎奇事件也少不了,但逃出密室的光明天空才是重点的希望。
游戏总体风格
(黑暗,热血,童话,推理)
游戏预计使用工具开发
预设
悬念设置游戏要用萝莉,剧情,狗血来吊玩家的胃口?
游戏的操作方式鼠标为基本设定,键盘对应。操作键初回定有,
ui设计败笔,尽量让看起来比较适合。
省略
指定大概的风格游戏的界面感觉可能很黑暗,同时人物却走的gal-game风格,
其实看起来很像很现代,颓废和普通的言情小说没两样,其实故事还没开始。是说一群人在一个车厢发生猎奇事件的开始。时间是分开,穿越但有连接的。主要是冲向Amnesia: The Dark Descent,silent hill系列,sanitarium,still life等美式游戏,但就是想到这些游戏的人物真得很不适合喜欢acg的玩家的口味。于是说不如把角色都看gal-game化怎么样,于是就开始了无止境的填坑。
gal-game著名的school-day里的渣城成了众玩家的阴影,所想来个纯爷的主角也不错。
单纯的神鬼剧情有什么好看,重点不在神鬼惊悚,是在于人性正面与反面之间的故事。
比起惊悚,此剧更在重于温馨。
所以,不喜勿入。
附录(给自己看的)
然后写了个动态效果的东西
<*f*r*a*me regx="114" regy="50" x="515" y="0" w="229" h="100" name="anim_ceilingfan_01.png" />
--------------------------------------------------
迷你游戏。
[controller]
left=44
top=58
stayontop=0
[console]
autoshowonerror=0
left=747
top=57
width=515
height=389
exprhist=gl.visible@-@*mine@-@*mine.gl@-@*mine.gl.visible@-@*mine.gl.top@-@*mine.gl.left@-@*mine.gl.width@-@*mine.gl.height@-@*mine.gl.buttons@-@*mine.gl.buttons[0]@-@*mine.gl.buttons[0].visible@-@*mine.gl.buttons[0].top@-@*mine.gl.buttons[0].left@-@*mine.gl.buttons[0].onPaint()@-@*mine.gl.onPaint()@-@*mine.update()@-@*mine.base()@-@*mine.base.onPaint()@-@*@-@*
stayontop=0
font=pEpPpPpPaAaAaAaAaAaAaAaAaAaAaAaAjAaBaAaAaAaAaAiGaAaAaAaAmLmOmMoFaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaA
[watch]
left=44
top=58
width=299
height=223
col0width=140
col1width=400
stayontop=0
exprlist=
interval=1000
@start
Scripts.evalStorage("Buttons.tjs");
Scripts.evalStorage("GameLayer.tjs");
Scripts.evalStorage("Window.tjs");
var mine = new GameWindow();
var color = [0xffa012, 0x2020c2, 0x2355ff, 0x350122, 0xc0b020, 0xf0a000, 0xffa0a0, 0x123456, 0x654321, 0x000000];
class GridButton extends Layer
{
var state; // -3表示放了旗子 -2 代表没有按下, -1 代表雷 0 ~ 8 代表数字。
var ID_x, ID_y;
var preCh = false;
function GridButton(win, par, x, y)
{
Layer(win, par);
state = -2;
focusable = true;
ID_x = x;
ID_y = y;
font.height = 20;
}
function onMouseDown(x, y, button, shift)
{
if (System.getKeyState(VK_LBUTTON) && System.getKeyState(VK_RBUTTON) )
preCh = true;
}
function onMouseUp(x, y, button, shift)
{
if (button == mbLeft) {
if (state == -2)
parent.choose(this);
}
else if (button == mbRight) { //切换旗子和非旗子
if (state == -2) state = -3;
else if (state == -3) state = -2;
update();
}
if (state >= 0) {
if (preCh)
parent.check(ID_x, ID_y);
preCh = false;
}
}
function onPaint()
{
super.onPaint(...);
colorRect(0, 0, width, height, 0);
colorRect(1, 1, width-2, height-2, 0xffffff);
drawState();
}
function drawState()
{
if (state >= 0) { //数字
var h = font.getTextHeight(state);
var w = font.getTextWidth(state);
drawText((width-w)/2, (height-h)/2, state, color[state], 255, true);
} else if (state == -1) { //雷
colorRect(width/8, height/8, width*3/4, height*3/4, 0xff0000);
} else if (state == -3) { // 旗子
colorRect(width/4, height/4, width/2, height/2, 0xffc0b0);
}
}
}
var intrandom = function (l, r) {
var g = (r - l + 1) * Math.random();
return int(g) + l;
};
class GameLayer extends Layer
{
var Board;
var buttons;
var wid, hei;
var mineNumber; //雷数
var gamestate;
var opened;
function GameLayer(win, par, w, h, m)
{
Layer(win, par);
font.height = 20;
setImageSize(w * 32, h * 32 + 60);
setSizeToImageSize();
wid = w;
hei = h;
mineNumber = m;
buildBoard();
}
function finalize()
{
if (buttons !== void)
for (var i = 0; i < buttons.count; ++i)
invalidate buttons[i];
}
function buildBoard()
{
finalize();
colorRect(0, 0, width, height, 0xffffff);
Board = [];
for (var i = 0; i < hei; ++i) {
Board[i] = [];
for (var j = 0; j < wid; ++j)
Board[i][j] = 0;
}
var m = mineNumber;
//随机造M颗雷
while (m > 0) {
var x = intrandom(0, hei-1), y = intrandom(0, wid-1);
if (Board[x][y] == 0) {
Board[x][y] = -1;
--m;
}
}
//根据雷计算每个格子的数字
for (var i = 0; i < hei; ++i)
for (var j = 0; j < wid; ++j)
if (Board[i][j] == -1) {
for (var x = int(Math.max(0, i-1)); x <= i+1 && x < hei; ++x)
for (var y = int(Math.max(0, j-1)); y <= j+1 && y < wid; ++y)
if (Board[x][y] != -1) Board[x][y] ++;
}
//产生h*w个按钮
buttons = [];
for (var i = 0; i < hei; ++i) {
for (var j = 0; j < wid; ++j) {
var bt = new GridButton(window, this, i, j);
bt.setPos(j*32, i*32);
bt.visible = true;
buttons.add(bt);
}
}
gamestate = 0;
opened = 0;
update();
}
function choose(bt)
{
var st = bt.state = Board[bt.ID_x][bt.ID_y];
bt.update();
if (st == 0) check(bt.ID_x, bt.ID_y); //如果是0则尝试直接展开此格子
else if (st == -1) { // 如果踩到雷了, 则Lose
Lose();
}
++opened;
if (opened + mineNumber == wid*hei) Win();
}
function onPaint()
{
for (var i = 0; i < buttons.count; ++i)
buttons[i].update();
}
function check(x, y)
{ //左右键同时点击x, y时做检查。
if (gamestate) return; //先确认在游戏没有结束。
var cnt = 0; //记录周围雷的个数
for (var i = 0; i < buttons.count; ++i)
if (Math.abs(buttons[i].ID_x-x)<=1 && Math.abs(buttons[i].ID_y-y)<=1) {
if (buttons[i].state == -3) ++cnt; //统计旗子个数
}
if (cnt == Board[x][y]) { //正好是这么多:)
for (var i = 0; i < buttons.count; ++i)
if (Math.abs(buttons[i].ID_x-x)<=1 && Math.abs(buttons[i].ID_y-y)<=1) {
if (buttons[i].state == -2)
choose(buttons[i]);
}
}
}
function Lose()
{
gamestate = -1;
for (var i = 0; i < buttons.count; ++i) {
buttons[i].state = Board[buttons[i].ID_x][buttons[i].ID_y];
buttons[i].update();
}
drawText(0, hei * 32 + 3, "失败了~ , 真是辛苦啊", 0x0020b0, 255, true);
}
function Win()
{
gamestate = -1;
for (var i = 0; i < buttons.count; ++i) {
if (Board[buttons[i].ID_x][buttons[i].ID_y] == -1)
buttons[i].state = -3;
}
update();
drawText(0, hei*32 + 3, "恭喜你, 惊人的胜利!", 0xff0505, 255, true);
}
function onDoubleClick(x, y)
{
if (gamestate == -1) {
gamestate =-2;
buildBoard();
}
}
}
---------------------------------------
题外话。
多谢云端科技让我只有8mb的电脑重生了。