07、开源游戏-“胡子”开始游戏前01

雨燕双飞 提交于 2020-03-01 10:05:33

游戏开始前的各种资源初始化,玩家事件的绑定,信息的本地存储(这是用了库store虽然自己写也很简单,但这个做了合成,更小)。

开始界面修改

增加了loading场景和游戏主场景(目前为空)

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>胡子-即时战略游戏</title>
<link rel="stylesheet" href="styles.css" type="text/css" media="screen" charset="utf-8">
<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/store.js" type="text/javascript" charset="utf-8"></script>
<script src="js/resourceloader.js" type="text/javascript" charset="utf-8"></script>
<script src="js/singlegame.js" type="text/javascript" charset="utf-8"></script>
<script src="js/game.js" type="text/javascript" charset="utf-8"></script>
<script src="js/task.js" type="text/javascript" charset="utf-8"></script>
<script src="js/sounds.js" type="text/javascript" charset="utf-8"></script>
<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="gamecontainer">
	<div id="startscene">
	  <div id="singleplayer" class="gamebtn_"></div>
	  <div id="multiplayer" class="gamebtn_"></div>
	  <div id="config" class="gamebtn_"></div>
	  <div id="aboutme" class="gamebtn_"></div>
	  <div id="checkbullet"></div>
	  <div id="hero1" class="hero_"></div>
	  <div id="hero2" class="hero_"></div>
	  <div id="hero3" class="hero_"></div>
	</div>
  <div id="gamescene"></div>
  <div id="loadingscene">
    	<div id="progressbar"></div>
        <div id="progresstip"></div>
  </div>
</div>
</body>
</html>

我们将不同的功能,写在了不同js里,如main.js(前面章节中的common.js,叫做main更合适些),绑定了用户选择事件,并调用store.js存储选择信息(英雄信息)。

main.js

main.js做了如下事情:

1、绑定选择英雄的事件。

2、事件触发后,初始化游戏。目前只处理单人游戏事件。

3、初始化资源(后面会详细说)。

4、当音乐初始化资源完,播放背景音乐(后面会详细说)。

5、恢复用户的信息。

$(function(){
	$(".hero_").click(function(){
		var selectedHero = $(this).attr("id");
		if(selectedHero){
			var checkbulletY = selectedHero == "hero1"?"160px":selectedHero =="hero2"?"255px":"350px";
			$("#checkbullet").css({"top":checkbulletY});
			var data = store.get('data');
			data.hero = selectedHero;
			data.checkbullety = checkbulletY;
			data.task = 0;//目前没有开发任务,都从头开始
			store.set('data',data);
		}
	});
	$(".gamebtn_").click(function(){
		var item = $(this).attr("id");
		switch(item){
			case 'singleplayer':
				singlegame.init();
				break;
			case 'multiplayer':
			case 'config':
			case 'aboutme':
		}
	});
});
$(window).load(function() {
	resourceloader.init();
	sounds.init();
	if (resourceloader.loaded){
		sounds.bgMusic();
	} else {
		resourceloader.onload = sounds.bgMusic;
	}
	if(store.get('data')){
		$("#checkbullet").css({"top":store.get('data').checkbullety});
	}else{
		store.set('data',{hero:"hero1",checkbullety:"160px",task:0});
	}
});

singlegame.js

在main.js中,玩家单击单人游戏后,singlegame会初始化游戏,目前做了一下事情:

1、显示loading画面。

2、根据当前的任务(可以理解为第几关卡),在loading的同时,显示任务的描述。

3、初始化当前任务的资源(后面会详细说明)

4、3步完成后启动游戏,没完成交给资源加载器去启动游戏(加载完成时)。

5、启动游戏,隐藏loading场景,显示游戏主场景(待续)

var singlegame = {
    init:function(){
		$('#loadingscene').show();
		var currentTask = task[store.get('data').task];
		$('#progresstip').html('<strong>'+currentTask.name+'</strong><br/>'+currentTask.briefing);
		game.currentTask = currentTask;
	    game.currentMapImage = resourceloader.loadImage(currentTask.mapImage);
	    
	    if (resourceloader.loaded){
	        singlegame.start();
	    } else {
	        resourceloader.onload = singlegame.start;
	    }
    },
    start:function(){
		//待续
		//$('#loadingscene').hide();
		//$('#gamescene').show();
    },    
    exit:function(){
        
    }
};

task.js

所有任务的信息。如任务名称,简介、地图、音乐等。目前只有一个任务“起局”。

var task = [
	{
		"name":"起局",
		"briefing": "兄弟滴血喝酒,插香敬十八罗汉,拜达摩老祖,聚义起誓,大当家报号,。。。",
		"mapImage":"images/maps/1.jpg",
		"music":["0_1","0_2"]
	}	
]


截图

看下今天我们成果截图和听了让人心情激荡的背景音乐,呵呵。


总结

将游戏中的场景(div)摆放到index.html,调整默认的显示形式、背景等。

同时初始化游戏资源或功能。如有本地存储信息则读取,并设置页面显示。

绑定用户的输入事件,并做处理函数。

存储用户的输入信息。

启动游戏。

加载当前任务资源。

开始游戏。

svn和git将在晚些更新(代码可能还需要调整,呵呵)

下午要陪孩子去画画,估计明天才能更新。

未完待续。。。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!