实例介绍
【实例简介】
【实例截图】
【核心代码】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<div id="wrap"></div>
</body>
<script src="cnGame_v1.1.js"></script>
<script>
var wrap=document.getElementById("wrap");
var canvas=document.createElement("canvas");
canvas.id="gameCanvas"
canvas.innerHTML="请使用支持canvas的浏览器查看";
wrap.appendChild(canvas);
/* 开始界面 */
var startLevel={
level:"start",
srcObj:{
startSrc:"images/start.png"
}
}
/* 第一关 */
var level1={
level:1,
srcObj:{
ground:"images/grass.png",
stone:"images/stone1.png",
wall:"images/wall.png",
player:"images/player1.png",
bullet:"images/bullet1.png",
enemy:"images/enemy1.png",
goods:"images/goods.png",
destination:"images/destination.png",
boom:"images/boom.png",
source:"images/source.png"
},
/* 地图矩阵:0.空地 1.墙壁 2.石头 3.目的地 4.敌人基地*/
mapMatrix:[
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,1,0,0,2,2,0,0,0,2,2,0,0,0,1],
[1,0,1,0,0,0,2,0,0,0,4,0,0,0,2,1],
[1,0,1,0,0,0,0,0,2,0,0,0,0,0,0,1],
[1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,1],
[1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,0,0,0,1,1,1,2,2,1],
[1,0,0,0,0,2,0,0,0,0,1,3,0,0,0,1],
[1,0,0,0,0,2,0,2,0,0,1,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
],
startOptions:{enemyBeginX:400,enemyBeginY:120,goodsArr:[{x:120,y:200}]}
}
/* 第二关 */
var level2={
level:2,
//游戏资源字典
srcObj:{
ground:"images/desert2.png",
stone:"images/stone1.png",
wall:"images/wall.png",
player:"images/player1.png",
bullet:"images/bullet1.png",
enemy:"images/enemy2.png",
goods:"images/goods.png",
destination:"images/destination.png",
boom:"images/boom.png",
source:"images/source.png"
},
/* 地图矩阵:0.空地 1.墙壁 2.石头 3.目的地 4.敌人基地*/
mapMatrix:[
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1],
[1,0,1,1,0,0,0,4,0,0,1,1,0,0,0,1],
[1,3,2,0,0,1,2,0,0,0,0,0,2,0,2,1],
[1,0,2,0,0,0,0,0,2,0,0,2,2,0,0,1],
[1,0,2,0,0,1,0,0,0,0,0,0,0,0,0,1],
[1,0,2,0,0,1,0,0,0,0,0,0,0,0,0,1],
[1,1,1,2,2,1,1,0,0,0,1,1,1,2,2,1],
[1,0,0,0,0,2,0,0,0,0,0,0,2,0,0,1],
[1,0,0,0,0,2,0,1,0,0,0,0,2,3,0,1],
[1,0,0,1,0,0,2,2,0,0,0,0,2,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
],
startOptions:{enemyBeginX:280,enemyBeginY:80,goodsArr:[{x:120,y:320},{x:400,y:120}]}
}
/* 第三关 */
var level3={
level:3,
//游戏资源字典
srcObj:{
ground:"images/desert.png",
stone:"images/stone1.png",
wall:"images/wall.png",
player:"images/player1.png",
bullet:"images/bullet1.png",
enemy:"images/enemy3.png",
goods:"images/goods.png",
destination:"images/destination.png",
boom:"images/boom.png",
source:"images/source.png"
},
/* 地图矩阵:0.空地 1.墙壁 2.石头 3.目的地 4.敌人基地*/
mapMatrix:[
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,3,1,0,0,0,0,0,0,0,2,2,0,0,1],
[1,0,0,2,0,0,0,0,0,0,1,2,3,0,0,1],
[1,0,2,2,0,1,2,0,0,0,0,0,2,1,1,1],
[1,0,2,0,0,1,0,0,2,0,0,2,2,0,0,1],
[1,0,2,2,0,0,2,0,0,0,0,0,0,0,0,1],
[1,0,2,0,0,0,0,0,0,0,1,0,0,0,0,1],
[1,1,1,2,2,0,0,0,0,0,1,1,1,2,2,1],
[1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1],
[1,0,0,0,0,0,4,1,0,2,0,0,2,0,0,1],
[1,0,0,1,0,0,2,2,0,2,3,0,2,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
],
startOptions:{enemyBeginX:240,enemyBeginY:360,goodsArr:[{x:520,y:360},{x:520,y:200},{x:240,y:160}]}
}
/* 关卡管理器 */
var LevelManager=(function(){
var optionsObj={};//所有关卡参数对象
return {
add:function(levelObj,gameObj){
var srcArr=[];
for(name in levelObj.srcObj){
if(levelObj.srcObj.hasOwnProperty(name)){
srcArr.push(levelObj.srcObj[name]);
}
}
var opt=optionsObj[levelObj.level]={};
opt.gameObj=gameObj;
opt.srcArray=srcArr;
opt.startOptions=levelObj.startOptions||{};
opt.startOptions.mapMatrix=levelObj.mapMatrix;
opt.startOptions.srcObj=levelObj.srcObj;
opt.startOptions.level=levelObj.level;
},
startLevel:function(num){
var op=optionsObj[num];
cnGame.loader.start(op.gameObj,op);
}
}
})();
cnGame.init("gameCanvas",{width:640,height:480});//初始化游戏框架
var srcObj;
/* 玩家对象 */
var player=function(options){
this.init(options);
this.angle=0;//旋转角
this.rSpeed=8;
this.moveSpeed=5;
this.shootDuration=0.2;
this.shootLast=0;
};
cnGame.core.inherit(player,cnGame.Sprite);
/* 判断是否可以向某方向移动 */
var canRight=function(obj,map){
var posValue=map.getPosValue(obj.x obj.width,obj.y);
return (posValue==0||posValue==3||posValue==4)&&!isMoveCollision(obj,obj.x obj.width,obj.y,map);
}
var canLeft=function(obj,map){
var posValue=map.getPosValue(obj.x-obj.moveSpeed,obj.y);
return (posValue==0||posValue==3||posValue==4)&&!isMoveCollision(obj,obj.x-obj.moveSpeed,obj.y,map);
}
var canUp=function(obj,map){
var posValue=map.getPosValue(obj.x,obj.y-obj.moveSpeed);
return (posValue==0||posValue==3||posValue==4)&&!isMoveCollision(obj,obj.x,obj.y-obj.moveSpeed,map);
}
var canDown=function(obj,map){
var posValue=map.getPosValue(obj.x,obj.y obj.height);
return (posValue==0||posValue==3||posValue==4)&&!isMoveCollision(obj,obj.x,obj.y obj.height,map)
}
/* 判断朝向是否为某方向 */
var isToRight=function(obj){
return obj.angle==0||obj.angle==360;
}
var isToLeft=function(obj){
return obj.angle==180||obj.angle==-180;
}
var isToUp=function(obj){
return obj.angle==90||obj.angle==-270;
}
var isToDown=function(obj){
return obj.angle==-90||obj.angle==270;
}
/* 判断是那种类型的游戏对象 */
var isEnemy=function(obj){
return obj instanceof enemy;
}
var isGoods=function(obj){
return obj instanceof goods;
}
var isBullet=function(obj){
return obj instanceof bullet;
}
var isPlayer=function(obj){
return obj instanceof player;
}
/* 判断对象是否在地图内 */
var isInnerMap=function(obj){
return obj.x>=0&&obj.x<=cnGame.width-obj[i].width&&obj[i].y>=0&&obj[i].y<=cnGame.height-obj[i].height;
}
/* 设置以一定角速度旋转 */
var rotateToAngle=function(obj,angle){
if(!obj){
return;
}
if(obj.angle-angle<-180){
angle=angle-360;
}
else if(obj.angle-angle>180){
if(angle!=0){
angle=360-angle;
}
else{
angle=360;
}
}
if(obj.angle>angle){
obj.rotateSpeed=-obj.rSpeed;
obj.minAngle=angle;
}
else if(obj.angle<angle){
obj.rotateSpeed=obj.rSpeed;
obj.maxAngle=angle;
}
}
/* 发射子弹 */
var shoot=function(obj,from){
if(!obj){
return;
}
var bulletY;
var bulletX;
var newBullet;
var dir;
if(obj.angle%90==0){
if(isToRight(obj)){
bulletY=(obj.height-10)/2 obj.y;
bulletX=obj.x obj.width;
dir="right";
}
else if(isToLeft(obj)){
bulletY=(obj.height-10)/2 obj.y;
bulletX=obj.x-10;
dir="left";
}
else if(isToUp(obj)){
bulletY=obj.y-10;
bulletX=obj.x (obj.width/2-5);
dir="up";
}
else if(isToDown(obj)){
bulletY=obj.y obj.height;
bulletX=obj.x (obj.width/2-5);
dir="down";
}
newBullet=new bullet({src:srcObj.bullet,width:10,height:10,from:from,x:bulletX,y:bulletY});
cnGame.spriteList.add(newBullet);
move(newBullet,dir);
}
}
/* 子弹对象 */
var bullet=function(options){
this.init(options);
this.from=options.from||"player";
this.moveSpeed=options.moveSpeed||10;
}
cnGame.core.inherit(bullet,cnGame.Sprite);
/* 击中后的爆炸动画效果 */
bullet.prototype.explode=function(){
var self=this;
this.isExploding=true;
var spriteSheet=new cnGame.SpriteSheet("boom",srcObj.boom,{
width:280,
height:40,
frameSize:[40,40],
frameDuration:40,
onFinish:function(){self.isDisappear=true}
});
this.setCurrentAnimation(spriteSheet);
this.speedX=0;
this.speedY=0;
}
/* 敌人对象 */
var enemy=function(options){
this.init(options);
this.angle=options.angle||0; //旋转角
this.rSpeed=options.rSpeed||5; //旋转角速度
this.shootDuration=options.shootDuration||2;//射击时间间隔
this.shootLast=0;//距离上次射击经过时间
this.moveSpeed=options.moveSpeed||5;//移动速度
}
cnGame.core.inherit(enemy,cnGame.Sprite);
/* 获取随机方向 */
enemy.prototype.getRandomDir=function(dirArr){
var dir=dirArr[Math.floor(Math.random()*4)];
this.enemyDirection=dir;
}
/* 判断敌人相对于玩家位置和角度,若满足条件则射击 */
enemy.prototype.detectShoot=function(player,duration){
if(player&&this.shootLast>=this.shootDuration){
if(Math.floor(this.x)==Math.floor(player.x)){//和玩家处于同一列格子
if((this.y>player.y&&(isToUp(this)))||(this.y<player.y&&(isToDown(this)))){
shoot(this,"enemy");
this.shootLast=0;
}
}
else if(Math.floor(this.y)==Math.floor(player.y)){//和玩家处于同一行格子
if((this.x>player.x&&(isToLeft(this)))||(this.x<player.x&&(isToRight(this)))){
shoot(this,"enemy");
this.shootLast=0;
}
}
}
this.shootLast =duration;
}
/* 物资对象 */
var goods=function(options){
this.init(options);
this.moveSpeed=5||options.moveSpeed;
}
cnGame.core.inherit(goods,cnGame.Sprite);
/* 向不同方向移动的函数 */
var move=function(obj,direction){
if(!obj){
return;
}
if(direction=="right"){
obj.speedX=obj.moveSpeed;
obj.speedY=0;
}
else if(direction=="left"){
obj.speedX=-obj.moveSpeed;
obj.speedY=0;
}
else if(direction=="up"){
obj.speedY=-obj.moveSpeed;
obj.speedX=0;
}
else if(direction=="down"){
obj.speedY=obj.moveSpeed;
obj.speedX=0;
}
else if(direction=="stop"){
obj.speedY=0;
obj.speedX=0;
}
}
/* 碰撞检测 */
var isCollision=function(x,y){
var spriteList=cnGame.spriteList;
var rect2;
if(cnGame.core.isObject(x)){
var rect1=x.getRect();
for(var i=0,len=spriteList.length;i<len;i ){
if(x!=spriteList[i]){
rect2=spriteList[i].getRect();
if(cnGame.collision.col_Between_Rects(rect1,rect2)){
return true;
}
}
}
}
else if(cnGame.core.isNum(x)&&cnGame.core.isNum(y)){
for(var i=0,len=spriteList.length;i<len;i ){
rect2=spriteList[i].getRect();
if(cnGame.collision.col_Point_Rect(x,y,rect2)){
return true;
}
}
}
else{
return false;
}
}
/* 移动碰撞检测 */
var isMoveCollision=function(obj,x,y,map){
var indexArr=map.getCurrentIndex(x,y);
x=indexArr[0];
y=indexArr[1];
var spriteList=cnGame.spriteList;
for(var i=0,len=spriteList.length;i<len;i ){
var spriteIndex=map.getCurrentIndex(spriteList[i].x,spriteList[i].y);
if(obj!=spriteList[i]&&spriteIndex[0]==x&&spriteIndex[1]==y){
if((obj instanceof player)&&(spriteList[i] instanceof goods)){
continue;
}
return true;
}
}
return false;
}
/* 检测是否可移动,可以则移动(必须在旋转完成后才可以移动) */
var detectMove=function(obj,dir,map,dirArr){
if(!obj){
return;
}
if(map.isMatchCell(obj)){//使player保持与格子重合
if(dir=="right"){
if(!isToRight(obj)){
rotateToAngle(obj,0);
move(obj,"stop");
}
else if(canRight(obj,map)){
move(obj,"right");
}
else if(isPlayer(obj)){//如果是player,遇到障碍后停止
move(obj,"stop");
}
else{//如果是敌人,遇到障碍后自己再选择随机方向移动
detectMove(obj,obj.getRandomDir(dirArr),map,dirArr);
}
}
else if(dir=="left"){
if(!isToLeft(obj)){
rotateToAngle(obj,180);
move(obj,"stop");
}
else if(canLeft(obj,map)){
move(obj,"left");
}
else if(isPlayer(obj)){
move(obj,"stop");
}
else{
detectMove(obj,obj.getRandomDir(dirArr),map,dirArr);
}
}
else if(dir=="up"){
if(!isToUp(obj)){
rotateToAngle(obj,90);
move(obj,"stop");
}
else if(canUp(obj,map)){;
move(obj,"up");
}
else if(isPlayer(obj)){
move(obj,"stop");
}
else{
detectMove(obj,obj.getRandomDir(dirArr),map,dirArr);
}
}
else if(dir=="down"){
if(!isToDown(obj)){
rotateToAngle(obj,270);
move(obj,"stop");
}
else if(canDown(obj,map)){
move(obj,"down");
}
else if(isPlayer(obj)){
move(obj,"stop");
}
else{
detectMove(obj,obj.getRandomDir(dirArr),map,dirArr);
}
}
else{
move(obj,"stop");
}
if(obj.angle==360||obj.angle==-360){
obj.angle=0;
obj.minAngle=0;
obj.maxAngle=0;
}
}
}
var gameObj=(function(){
var changeDirLast=0;
var createEnemyLast=0;
var indexObj={};
var shootDir;
var posValue;
var currentIndex;
var dirArr=["right","left","up","down"];//敌人移动方向数组
return {
changeEnemyDirDuration:2,//改变敌人方向的时间间隔
createEnemyDuraton:8,//创建敌人的时间间隔
/* 初始化 */
initialize:function(options){
srcObj=options.srcObj;
this.level=options.level;
this.enemyBeginX=options.enemyBeginX;
this.enemyBeginY=options.enemyBeginY;
this.map=new cnGame.Map(options.mapMatrix,{cellSize:[40,40]});
this.goods=[];
cnGame.input.preventDefault(["left","right","up","down"]);
for(var i=0,len=options.goodsArr.length;i<len;i ){
this.goods.push(new goods({src:srcObj.goods,width:40,height:40,x:options.goodsArr[i].x,y:options.goodsArr[i].y}));
cnGame.spriteList.add(this.goods[this.goods.length-1]);
}
this.player=new player({src:srcObj.player,width:40,height:40,x:40,y:cnGame.height-80});
cnGame.spriteList.add(this.player);
var newEnemy=new enemy({src:srcObj.enemy,width:40,height:40,x:this.enemyBeginX,y:this.enemyBeginY});
newEnemy.getRandomDir(dirArr);
cnGame.spriteList.add(newEnemy);
},
/* 删除已爆炸的子弹 */
cleanBullets:function(){
var list=cnGame.spriteList;
for(var i=0,len=list.length;i<len;i ){
var obj=list[i];
if(isBullet(obj)&&obj.isDisappear){
list.remove(obj);
}
}
},
/* 到下一关 */
toNextLevel:function(){
this.end();
if(this.level!=3){
LevelManager.startLevel(this.level 1);//开始下一关
}
else{
alert("you Win!");
}
},
/* 更新 */
update:function(duration){
var finishedNum=0; //已送达目的地的物资数
var direction;
var list=cnGame.spriteList;
var _map=this.map;
var _goodsArr=this.goods;
var _goods;
var _player=this.player;
if(!this.player){//如果player已消失,则结束游戏
this.end();
alert("you lost");
return;
}
//键盘控制player的移动和发弹
if(cnGame.input.isPressed("right")){
direction="right";
}
else if(cnGame.input.isPressed("left")){
direction="left";
}
else if(cnGame.input.isPressed("up")){
direction="up";
}
else if(cnGame.input.isPressed("down")){
direction="down";
}
detectMove(_player,direction,_map,dirArr);
if(cnGame.input.isPressed("space")){
if(_player.shootLast>_player.shootDuration){
shoot(_player,"player");
_player.shootLast=0;
}
}
_player.shootLast =duration;
for(var i=0,len=_goodsArr.length;i<len;i ){
_goods=_goodsArr[i];
if(_map.isMatchCell(_goods)&&(_map.getPosValue(_goods)==3)){//判断所有物资是否已到达目的地
finishedNum =1;
if(finishedNum==_goodsArr.length){
this.toNextLevel();
}
}
if(cnGame.collision.col_Between_Rects(_player.getRect(),_goods.getRect())){//player推动goods的判别
if(_player.x==_goods.x){
if(isToUp(_player)&&_player.y>_goods.y){
if(canUp(_goods,_map)){
_goods.speedY=_player.speedY;
}
else{
_goods.speedY=_player.speedY=0;
}
}
if(isToDown(_player)&&_player.y<_goods.y){
if(canDown(_goods,_map)){
_goods.speedY=_player.speedY;
}
else{
_goods.speedY=_player.speedY=0;
}
}
}
if(_player.y==_goods.y){
if(isToRight(_player)&&_player.x<_goods.x){
if(canRight(_goods,_map)){
_goods.speedX=_player.speedX;
}
else{
_goods.speedX=_player.speedX=0;
}
}
if(isToLeft(_player)&&_player.x>_goods.x){
if(canLeft(_goods,_map)){
_goods.speedX=_player.speedX;
}
else{
_goods.speedX=_player.speedX=0;
}
}
}
}
}
//遍历数组,更新sprite
for(var i=0,len=list.length;i<len;i ){
if(list[i] instanceof enemy){//如果是敌人,定期改变它的方向
list[i].detectShoot(_player,duration);
if(changeDirLast>=this.changeEnemyDirDuration){
list[i].getRandomDir(dirArr);
changeDirLast=0;
}
else{
changeDirLast =duration;
}
detectMove(list[i],list[i].enemyDirection,this.map,dirArr);//敌人定时改变移动方向
}
else if(isBullet(list[i])&&!list[i].isExploding){//如果是还没爆炸的子弹,判别击中的目标
/* 击中石头或围墙 */
if(posValue=_map.getPosValue(list[i].x,list[i].y)){//如果还在地图内(有对应格子值)
if(posValue==2||posValue==1){
if(posValue==2){
currentIndex=_map.getCurrentIndex(list[i].x,list[i].y);
_map.setPosValue(currentIndex[0],currentIndex[1],0);//如果击中石头,把石头变成空地
}
list[i].explode();//子弹爆炸
continue;
}
}
/* 击中goods或player或enemy */
for(var j=0;j<len;j ){
//如果击中敌人或玩家
if(isGoods(list[j])||(isEnemy(list[j])&&list[i].from=="player")||(isPlayer(list[j])&&list[i].from=="enemy")){
if(cnGame.collision.col_Between_Rects(list[i].getRect(),list[j].getRect())){
if(isGoods(list[j])){
list[i].explode();
continue;
}
if(list[i].from=="enemy"){
this.player=null;
}
list[i].explode();
list.remove(list[j])
if(j<i){
i--;
}
j--;
continue;
}
}
}
}
}
if(createEnemyLast>=this.createEnemyDuraton){//如果超过时间间隔,则创建敌人
if(!isMoveCollision({},this.enemyBeginX,this.enemyBeginY,this.map)){
var newEnemy=new enemy({src:srcObj.enemy,width:40,height:40,x:this.enemyBeginX,y:this.enemyBeginY});
newEnemy.getRandomDir(dirArr);
cnGame.spriteList.add(newEnemy);
createEnemyLast=0;
}
}
else{
createEnemyLast =duration;
}
this.cleanBullets();//清除已爆炸的子弹
},
/* 画出地图 */
draw:function(){
if(this.map){
this.map.draw({"0":{src:srcObj.ground},"1":{src:srcObj.wall},"2":{src:srcObj.stone},"3":{src:srcObj.destination},"4":{src:srcObj.source}}); }
},
/* 结束游戏 */
end:function(){
cnGame.loop.end();
}
}
})();
/* 开始界面对象 */
var startObj={
initialize:function(options){
var name="HTML5坦克后援队";
var author="by Cson";
var begin="按回车键开始";
var state1="游戏说明:方向键上下左右控制坦克的移动,空格键发射炮弹。";
var state2="把所有物资顺利推送到目的地则可完成任务进入下一关。";
this.startSrc=options.srcObj.startSrc;
this.text1=cnGame.shape.Text(name,{x:20,y:250,style:"#FFF",font:"bold 22px sans-serif"});
this.text2=cnGame.shape.Text(author,{x:145,y:280,style:"#FFF",font:"15px sans-serif"});
this.text3=cnGame.shape.Text(begin,{x:40,y:340,style:"#FFF",font:"bold 32px sans-serif"});
this.text4=cnGame.shape.Text(state1,{x:40,y:410,style:"#FFF",font:"bold 15px sans-serif"});
this.text5=cnGame.shape.Text(state2,{x:120,y:430,style:"#FFF",font:"bold 15px sans-serif"});
cnGame.input.onKeyDown("enter",function(){LevelManager.startLevel("1");/*开始第一关*/});
cnGame.input.preventDefault("enter");
},
draw:function(){
cnGame.context.drawImage(cnGame.loader.loadedImgs[this.startSrc],0,0,cnGame.width,cnGame.height);//画出开始界面
this.text1.draw();
this.text2.draw();
this.text3.draw();
this.text4.draw();
this.text5.draw();
}
}
LevelManager.add(startLevel,startObj);
LevelManager.add(level1,gameObj);
LevelManager.add(level2,gameObj);
LevelManager.add(level3,gameObj);
LevelManager.startLevel("start");//开始界面
</script>
</html>
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论