簡體   English   中英

控制乒乓球速度

[英]Control ball speed in pong

我下面有這段代碼,我很難解決這個問題。 dotime功能上,我的球速:

/* HERE */
function dotime() {
    move1();
    if (myform != null) {
        myform.text3.value = display1();
        myform.score.value = "" + score;
    }
    /* ---Ball Speed--- */
    if (!oops_flag) timerID = setTimeout("dotime()", 190);
    /* ---trying to make ball speed faster--- */
    if (score == 1) {
        timerID = setTimeout("dotime()", 100 - 30);
    }
    timerRunning = true;
}

我試圖使球移動得更快,但是當我進行第二次“ if”測試時,球飛得太快了。

在此先感謝您。

完整代碼:

var crlf = "\r\n";
var x = 0;
var y = 0;
var dx = 1;
var dy = 1;
var s = "";
var u = 0;
var oops_flag = false;
var score = 0;

function move1() {
    x += dx;
    if (x > 61) {
        x -= 2 * Math.abs(dx);
        if (dx > 0) dx = -dx;
    }
    if (x < 0) {
        x += 2 * Math.abs(dx);
        if (dx < 0) dx = -dx;
    }
    y += dy;
    if (y > 24) {
        y -= 2 * Math.abs(dy);
        if (dy > 0) dy = -dy;
        if (Math.abs(x - 2 * u - 1) > 2) {
            oops_flag = true;
        } else {
            score += 1;
        }
    }
    if (y < 0) {
        y += 2 * Math.abs(dy);
        if (dy < 0) dy = -dy;
    }
}

function display1() {
    var s1 = ""
    var i, j;
    if (oops_flag) return "                       Unlucky, Play again?"
    for (j = 0; j < 25; j++) {
        for (i = 0; i < 62; i++) {
            /* BALL */
            if (j == y && i == x) s1 += "🔴";
            else s1 += " ";
        }
        s1 += crlf;
    }
    /* DEFENDER */
    var s2 = "";
    for (i = 0; i < 31; i++) {
        if (u == i) s2 += "▄▄▄▄▄";
        else s2 += "  ";
    }
    return (s1 + s2);
}
var timerID = null;
var timerRunning = false;
var myform;

function stopclock() {
    if (timerRunning) clearTimeout(timerID);
    timerRunning = false;
}

function startclock(form) {
    myform = form;
    oops_flag = false;
    score = 0;
    if (navigator.userAgent.indexOf("Mac") > 2) crlf = "\n";
    stopclock();
    dotime();
    // var id= setInterval(frameElement,10000);
}
/* HERE */
function dotime() {
    move1();
    if (myform != null) {
        myform.text3.value = display1();
        myform.score.value = "" + score;
    }
    if (!oops_flag) timerID = setTimeout("dotime()", 100);
    if (score == 1) {
        timerID = setTimeout("dotime()", 100 - 30);
    }
    timerRunning = true;
}

看來您有兩個計時器正在運行,因此您需要使它運行,因此只有一個將運行。

if (!oops_flag) {
    var speed = 100;
    if (score===1) speed = 70;
    timerID = setTimeout(dotime, speed);
}

或與三元運算符

if (!oops_flag) {
    var speed = (score===1) ? 70 : 100;
    timerID = setTimeout(dotime, speed);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM