課程
/前端開發(fā)
/HTML/CSS
/HTML5小游戲---愛心魚(上)
為什么我的代碼是照著老師的敲得,但是果實卻只能生長一個,一開始的30個不見了
2016-01-11
源自:HTML5小游戲---愛心魚(上) 2-6
正在回答
代碼呢?
姑娘有點太傲嬌 提問者
function drawBackground(){ ? ?ctx2.drawImage(bgPic,0,0,canW,canH);}/**ane???/var aneObj = function(){ ? ?this.x = []; ? ?this.len = [];}aneObj.prototype.num = 50; //數(shù)量aneObj.prototype.init = function(){ ? ?for(var i=0;i<this.num;i++){ ? ? ? ?this.x[i] = i*16+Math.random()*20; ? ? ? ?this.len[i] = 160+Math.random()*50; ? ?}};//畫???br />aneObj.prototype.draw = function(){ ? ?ctx2.save(); ? ?ctx2.globalAlpha = 0.6;//透明度 ? ?ctx2.lineWidth = 20; ? ?ctx2.lineCap = "round"; ? ?ctx2.strokeStyle = "#9AFF9A"; ? ?for(var i=0;i<this.num;i++){ ? ? ? ?ctx2.beginPath(); ? ? ? ?ctx2.moveTo(this.x[i],canH); ? ? ? ?ctx2.lineTo(this.x[i],canH-this.len[i]); ? ? ? ?ctx2.stroke(); ? ?} ? ?ctx2.restore();};/*fruit 果實*/var fruitObj = function(){ ? ?this.alive = []; //bool是否有果實 ? ?this.x =[]; ? ?this.y=[]; ? ?this.L =[];//果實的坐標變動移動 ? ?this.sd =[];//果實的速度 ? ?this.fruitType = []; //果實類型 ? ?this.orange = new Image(); //黃色果實 ? ?this.blue = new Image();//藍色果實}fruitObj.prototype.num = ?30;fruitObj.prototype.init = function(){ ? ?for(var i=0;i<this.num;i++){ ? ? ? ?this.alive[i] = false ; ? ? ? ?this.x[i] =0; ? ? ? ?this.y[i]=0; ? ? ? ?this.sd[i]= Math.random()*0.01+0.003; ? ? ? ?//this.born(i); ? ? ? ?this.fruitType[i] =""; ? ?} ? ?this.orange.src = "./src/fruit.png"; ? ?this.blue.src = "./src/blue.png";}//畫果實 果實成熟時出現(xiàn)果實 果實最大顯示多少個果實fruitObj.prototype.draw = function(){ ? ?for(var i=0;i<this.num;i++){ ? ? ? ?//draw ?畫果實 ? ? ? if(this.alive[i]) { ? ? ? ? ? var pic; ? ? ? ? ? if(this.fruitType[i] == "blue"){ ? ? ? ? ? ? ? ?pic = this.blue; ? ? ? ? ? }else{ ? ? ? ? ? ? ? pic = this.orange; ? ? ? ? ? } ? ? ? ? ? if (this.L[i] <= 20) { ? ? ? ? ? ? ? this.L[i] += this.sd[i] * deltaTime; ? ? ? ? ? } else { ? ? ? ? ? ? ? this.y[i] -= this.sd[i] * 2 * deltaTime; ? ? ? ? ? } ? ? ? ? ? ctx2.drawImage(pic, this.x[i] - this.L[i] * 0.5, this.y[i] - this.L[i] * 0.5, this.L[i], this.L[i]); ? ? ? ? ? // ? ? ? ? ? if (this.y[i] < 10) { ? ? ? ? ? ? ? this.alive[i] = false; ? ? ? ? ? } ? ? ? } ? ?}}fruitObj.prototype.born = function(i){ ? //記錄坐標 ??L位置 ? ?var aneID = Math.floor(Math.random()*ane.num); //隨機排重 ? ? this.x[i] = ane.x[aneID]; ? ? this.y[i] = canH - ane.len[aneID]; ? ? this.L[i] = 0; ? ? this.alive[i] = true;// ? ?果實類型 ? ?var ran = Math.random(); ? ?if(ran<0.25){ ? ? this.fruitType[i]= "blue"; ? ?}else{ ? ? ? ?this.fruitType[i]= "orange"; ? ?}}//判斷當前屏幕顯示的果實數(shù)量function fruitMonitor (){ ? ?var num = 0; ? ?for(var i=0;i<fruit.num;i++){ ? ? ? ?if(fruit.alive[i])num++; ? ?} ? ?if(num<15){ ? ? ? senFruit(); ? ? ? ?return; ? ?}}function senFruit(){ ? ?for(var i=0;i<fruit.num;i++){ ? ? ? ?if(!fruit.alive[i]){ ? ? ? ? ?fruit.born(i); ? ? ? ? ? ?return; ? ? ? ?} ? ?}}
按照我的對比一下
? ? this.born(i);去掉就對了。。
var fruitObj= function()
{
? ? this.alive= [];//是否活著,這里是一個booleans(布爾值)
? ? this.x=[];
? ? this.y=[];
? ? this.l=[];
? ? this.spd=[];//果實的速度?
? ? this.blue=new Image();
? ? this.orange= new Image();
}
fruitObj.prototype.num= 30;
fruitObj.prototype.init= function()//初始化
? ? for (var i=0; i<this.num; i++)
? ? {
? ? ? ? //this.alive[i]= false;定義果實的初始值為false代表這個時期果實處于休眠
? ? ? ? this.alive[i]= false;
? ? ? ? this.x[i]= 0;
? ? ? ? this.y[i]= 0;
? ? ? ? this.spd[i]= Math.random()*0.017+0.003;//果實漂浮的速度隨機[0.003,0.02)
? ? ? ? this.born(i);
? ? }
? ? this.blue.src="./src/blue.png";
? ? this.orange.src="./src/fruit.png";
fruitObj.prototype.draw= function()//畫果實
? ? //果實的兩個狀態(tài),一個是長在海葵上面,另一個是成熟后脫離???;
? ? ? ? //draw畫果實
? ? ? ? // find an one(找個一個果實),grow(成長),fly up(上浮)
? ? ? ? ? ? if(this.alive=[i])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(this.l[i]<=15)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? this.l[i]+= this.spd[i]*deltaTime;//使過程變得平滑
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? this.y[i]-=this.spd[i]*7*deltaTime;
? ? ? ? ? ? ? ? ctx2.drawImage(this.orange,this.x[i]-this.l[i]*0.5,this.y[i]-this.l[i]*0.5,this.l[i],this.l[i]);
? ? ? ? ? ? ? ? if(this.y[i]< 10)
? ? ? ? ? ? ? ? ? ? this.alive[i]= false;
? ? ? ? ? ? }
fruitObj.prototype.born= function(i)//果實的成長
? ? //隨機找一個???/p>
? ? var aneId=Math.floor(Math.random()*ane.num);
? ? this.x[i]= ane.x[aneId];//果實的x值
? ? this.y[i]= canHeight-ane.len[aneId];//果實的y值
? ? this.l[i]= 0;
? ? this.alive[i]= true;
fruitObj.prototype.update= function()//果實的更新
? ? var num= 0;
? ? for (var i=0; i<fruit.num; i++)
? ? ? ? if (fruit.alive[i])
? ? ? ? num++;
function fruitMonitor()//果實的監(jiān)聽功能
? ? var num = 0;//果實的數(shù)據(jù)統(tǒng)計
? ? for (var i= 0; i<fruit.num; i++)//判斷屏幕上當前有多少個果實是活著的
? ? ? ? {
? ? ? ? ? ? num++;
? ? ? ? ? ? //如果狀態(tài)就是一個活著的狀態(tài),我們就來做一個數(shù)據(jù)統(tǒng)計
? ? ? ? }
? ? ? ? if (num<15)
? ? ? ? //如果小于15個
? ? ? ? //send fruit 讓一個果實出生
? ? ? ? sendFruit();
? ? ? ? return;
function sendFruit()
? ? for (var i=0; i<fruitObj.prototype.num; i++)
? ? ? ? if(fruit.alive[i]= false)
? ? ? ? ? ? fruit.born(i);
? ? ? ? ? ? return;
舉報
學做HTML5游戲,輕輕松松帶你上手,適合剛入手游戲開發(fā)的同學
8 回答為什么照著老師代碼敲,老師的出現(xiàn)果實了,我的沒有呢,大家有類似的情況嗎
1 回答為什么alive是false的時候果實就消失,是那一個代碼負責實現(xiàn)了這個功能?
1 回答當一個果實飄出了屏幕寬度所有的果實就都不見了 為什么?
1 回答為何alive是false的時候果實就消失,是那一個代碼負責實現(xiàn)了這個功能?
2 回答代碼沒有報錯,按照老師敲得,看了4.5遍也沒找出來錯誤,為什么沒有果實
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-01-11
代碼呢?
2016-06-14
function drawBackground(){
? ?ctx2.drawImage(bgPic,0,0,canW,canH);
}
/**ane???/
var aneObj = function(){
? ?this.x = [];
? ?this.len = [];
}
aneObj.prototype.num = 50; //數(shù)量
aneObj.prototype.init = function(){
? ?for(var i=0;i<this.num;i++){
? ? ? ?this.x[i] = i*16+Math.random()*20;
? ? ? ?this.len[i] = 160+Math.random()*50;
? ?}
};
//畫???br />aneObj.prototype.draw = function(){
? ?ctx2.save();
? ?ctx2.globalAlpha = 0.6;//透明度
? ?ctx2.lineWidth = 20;
? ?ctx2.lineCap = "round";
? ?ctx2.strokeStyle = "#9AFF9A";
? ?for(var i=0;i<this.num;i++){
? ? ? ?ctx2.beginPath();
? ? ? ?ctx2.moveTo(this.x[i],canH);
? ? ? ?ctx2.lineTo(this.x[i],canH-this.len[i]);
? ? ? ?ctx2.stroke();
? ?}
? ?ctx2.restore();
};
/*fruit 果實*/
var fruitObj = function(){
? ?this.alive = []; //bool是否有果實
? ?this.x =[];
? ?this.y=[];
? ?this.L =[];//果實的坐標變動移動
? ?this.sd =[];//果實的速度
? ?this.fruitType = []; //果實類型
? ?this.orange = new Image(); //黃色果實
? ?this.blue = new Image();//藍色果實
}
fruitObj.prototype.num = ?30;
fruitObj.prototype.init = function(){
? ?for(var i=0;i<this.num;i++){
? ? ? ?this.alive[i] = false ;
? ? ? ?this.x[i] =0;
? ? ? ?this.y[i]=0;
? ? ? ?this.sd[i]= Math.random()*0.01+0.003;
? ? ? ?//this.born(i);
? ? ? ?this.fruitType[i] ="";
? ?}
? ?this.orange.src = "./src/fruit.png";
? ?this.blue.src = "./src/blue.png";
}
//畫果實 果實成熟時出現(xiàn)果實 果實最大顯示多少個果實
fruitObj.prototype.draw = function(){
? ?for(var i=0;i<this.num;i++){
? ? ? ?//draw ?畫果實
? ? ? if(this.alive[i]) {
? ? ? ? ? var pic;
? ? ? ? ? if(this.fruitType[i] == "blue"){
? ? ? ? ? ? ? ?pic = this.blue;
? ? ? ? ? }else{
? ? ? ? ? ? ? pic = this.orange;
? ? ? ? ? }
? ? ? ? ? if (this.L[i] <= 20) {
? ? ? ? ? ? ? this.L[i] += this.sd[i] * deltaTime;
? ? ? ? ? } else {
? ? ? ? ? ? ? this.y[i] -= this.sd[i] * 2 * deltaTime;
? ? ? ? ? }
? ? ? ? ? ctx2.drawImage(pic, this.x[i] - this.L[i] * 0.5, this.y[i] - this.L[i] * 0.5, this.L[i], this.L[i]);
? ? ? ? ? //
? ? ? ? ? if (this.y[i] < 10) {
? ? ? ? ? ? ? this.alive[i] = false;
? ? ? ? ? }
? ? ? }
? ?}
}
fruitObj.prototype.born = function(i){
? //記錄坐標 ??L位置
? ?var aneID = Math.floor(Math.random()*ane.num); //隨機排重
? ? this.x[i] = ane.x[aneID];
? ? this.y[i] = canH - ane.len[aneID];
? ? this.L[i] = 0;
? ? this.alive[i] = true;
// ? ?果實類型
? ?var ran = Math.random();
? ?if(ran<0.25){
? ? this.fruitType[i]= "blue";
? ?}else{
? ? ? ?this.fruitType[i]= "orange";
? ?}
}
//判斷當前屏幕顯示的果實數(shù)量
function fruitMonitor (){
? ?var num = 0;
? ?for(var i=0;i<fruit.num;i++){
? ? ? ?if(fruit.alive[i])num++;
? ?}
? ?if(num<15){
? ? ? senFruit();
? ? ? ?return;
? ?}
}
function senFruit(){
? ?for(var i=0;i<fruit.num;i++){
? ? ? ?if(!fruit.alive[i]){
? ? ? ? ?fruit.born(i);
? ? ? ? ? ?return;
? ? ? ?}
? ?}
}
按照我的對比一下
2016-02-03
? ? this.born(i);去掉就對了。。
2016-01-11
var fruitObj= function()
{
? ? this.alive= [];//是否活著,這里是一個booleans(布爾值)
? ? this.x=[];
? ? this.y=[];
? ? this.l=[];
? ? this.spd=[];//果實的速度?
? ? this.blue=new Image();
? ? this.orange= new Image();
}
fruitObj.prototype.num= 30;
fruitObj.prototype.init= function()//初始化
{
? ? for (var i=0; i<this.num; i++)
? ? {
? ? ? ? //this.alive[i]= false;定義果實的初始值為false代表這個時期果實處于休眠
? ? ? ? this.alive[i]= false;
? ? ? ? this.x[i]= 0;
? ? ? ? this.y[i]= 0;
? ? ? ? this.spd[i]= Math.random()*0.017+0.003;//果實漂浮的速度隨機[0.003,0.02)
? ? ? ? this.born(i);
? ? }
? ? this.blue.src="./src/blue.png";
? ? this.orange.src="./src/fruit.png";
}
fruitObj.prototype.draw= function()//畫果實
{
? ? //果實的兩個狀態(tài),一個是長在海葵上面,另一個是成熟后脫離???;
? ? for (var i=0; i<this.num; i++)
? ? {
? ? ? ? //draw畫果實
? ? ? ? // find an one(找個一個果實),grow(成長),fly up(上浮)
? ? ? ? ? ? if(this.alive=[i])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(this.l[i]<=15)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? this.l[i]+= this.spd[i]*deltaTime;//使過程變得平滑
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? this.y[i]-=this.spd[i]*7*deltaTime;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ctx2.drawImage(this.orange,this.x[i]-this.l[i]*0.5,this.y[i]-this.l[i]*0.5,this.l[i],this.l[i]);
? ? ? ? ? ? ? ? if(this.y[i]< 10)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? this.alive[i]= false;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? }
}
fruitObj.prototype.born= function(i)//果實的成長
{
? ? //隨機找一個???/p>
? ? var aneId=Math.floor(Math.random()*ane.num);
? ? this.x[i]= ane.x[aneId];//果實的x值
? ? this.y[i]= canHeight-ane.len[aneId];//果實的y值
? ? this.l[i]= 0;
? ? this.alive[i]= true;
}
fruitObj.prototype.update= function()//果實的更新
{
? ? var num= 0;
? ? for (var i=0; i<fruit.num; i++)
? ? {
? ? ? ? if (fruit.alive[i])
? ? ? ? num++;
? ? }
}
function fruitMonitor()//果實的監(jiān)聽功能
{
? ? var num = 0;//果實的數(shù)據(jù)統(tǒng)計
? ? for (var i= 0; i<fruit.num; i++)//判斷屏幕上當前有多少個果實是活著的
? ? ? ? {
? ? ? ? if (fruit.alive[i])
? ? ? ? ? ? num++;
? ? ? ? ? ? //如果狀態(tài)就是一個活著的狀態(tài),我們就來做一個數(shù)據(jù)統(tǒng)計
? ? ? ? }
? ? ? ? if (num<15)
? ? ? ? //如果小于15個
? ? ? ? {
? ? ? ? //send fruit 讓一個果實出生
? ? ? ? sendFruit();
? ? ? ? return;
? ? ? ? }
}
function sendFruit()
{
? ? for (var i=0; i<fruitObj.prototype.num; i++)
? ? {
? ? ? ? if(fruit.alive[i]= false)
? ? ? ? {
? ? ? ? ? ? fruit.born(i);
? ? ? ? ? ? return;
? ? ? ? }
? ? }
}