書き逃げアンドロイド。

副交感神経が優位になるような写真が好き。

DualGravity

2021年01月27日 23時02分19秒 | 日記

DualGravity

表示領域中央に引力持たせてみた

結果的に二重振り子みたいな動きになった

以前二重振り子作ろうと思って挫折したことあるので 何かうれしい

タイミング良く左⇦カーソルキーで減速させると円軌道に近くすることもできる

失敗するとスイングバイ起こして吹っ飛んてゆくけど 速度制限させているので大丈夫

結局 オイラはゲームにあんま興味がないので インスタレーション的なものになった

Android8.1上のChromeでは動作確認できているけど

他の環境で動くかどうかはわからない

 

 

Ende;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

startUp04

2021年01月27日 22時40分35秒 | 日記

startUp04

<font color="red">
<input type="button" value="Up" onclick="clickBtnUp()"/> <br>
size: <div id="div01"> </div>
<input type="button" value="Down" onclick="clickBtnDw()"> <font> <br>
<canvas width="550" height="550" id="startUp02" style="background-color:rgba(255, 255, 255, 1.0);"> </canvas>

<script>
var doc01= document.getElementById("div01")
var canvas = document.getElementById('startUp02');
var context = canvas.getContext('2d');
var x = 20;
var y = 20;
var size = 5;
var vect_x = 1;
var vect_y = 1;
var vx, vy;
var vg;
const center_x = canvas.width/2;
const center_y = canvas.height/2;

var rightPressed = false;
var leftPressed = false;

document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);

function keyDownHandler(e) {
    if(e.key == "Right" || e.key == "ArrowRight") {
         rightPressed = true;
    }
    else if(e.key == "Left" || e.key == "ArrowLeft") {
        leftPressed = true;
    }
}
function keyUpHandler(e) { if(e.key == "Right" || e.key == "ArrowRight") {
    rightPressed = false;
    }
else if(e.key == "Left" || e.key == "ArrowLeft") {
    leftPressed = false;
    }
}

function clickBtnUp(){
    size += 5;
    doc01.innerHTML = size;
}

function clickBtnDw(){
    if(size > 5){
        size -= 5;
    }
    doc01.innerHTML = size;
}

function draw(){
    context.globalCompositeOperation = "source-over";
    context.fillStyle = "black";
    context.globalAlpha = 1.0;
    context.fillRect(0, 0, canvas.width, canvas.height);

    context.beginPath();
    context.globalCompositeOperation = "lighter";
    context.fillStyle = "white";
    context.globalAlpha = 0.5;
    context.arc(x, y, size, 0, Math.PI*2, false);
    context.arc(center_x, center_y, 2, 0, Math.PI*2, false);
    context.fill();

    vg = Math.pow(center_x - x, 2) + Math.pow(center_y - y, 2);
    vg = 1 / vg;
    vx = (center_x - x) * vg*100;
    vy = (center_y - y) * vg*100;
    vect_x += vx;
    vect_y += vy;

    x += vect_x;
    y += vect_y;
    vect_y=vect_y + 0.25;

    if(x < 0 + size){
        x = size; 
        vect_x *= -1;
        if(vect_x>50)vect_x=50;
    }
    if(x > canvas.width - size){
        x = canvas.width - size;
        vect_x *= -1;
        if(vect_x>50)vect_x=50;
    }
    if(y < 0 + size){
        y = size;
        vect_y = 0;
    }
    if(y > canvas.height - size){
        y = canvas.height-size;
        vect_y *= -1;
    }

    if(rightPressed && vect_x
        vect_x *= 1.125;
        vect_y *= 1.125;
    }
    if(leftPressed){
        vect_x /= 1.125;
        vect_y /= 1.125;
    }
    context.fillStyle = "red";
    context.font="20px sans-serif";
    context.fillText("x: "+x+" ", 20, 30, 500);
    context.fillText("y: "+y+" ", 20, 50, 500);
    context.fillText("vect_x: "+vect_x+" ",20, 70, 500);
    context.fillText("vect_y: "+vect_y+" ",20, 90, 500);
}
setInterval(draw,32);
</script>


Ende;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

インタラクティブ

2021年01月27日 12時15分36秒 | 日記

何かゲーム的なものでも作れないかなと思って

こういうのをこさえてみた

⇨のカーソルキーで2倍に加速

⇦のカーソルキーで速度が半減する

画面上の「UP」「DOWN」ボタンで玉の大きさが変わる

で 実際に操作してみると 加速しすぎて表示範囲からはみ出し過ぎちゃって元に戻らなくなるバグがあった

表示範囲をはみだし過ぎると vect_x vect_y の符号を反転させても表示範囲に戻れず

表示の外から戻れなくなるのだ

なので戻れるように修正したのが⇨これ

まだゲームにはなってないけど

何かゲーム要素をつけてみようか

それとも別のインスタレーション的なものにしようか

考え中

 

 

Ende;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

startUp03

2021年01月27日 10時23分18秒 | 日記

startUp03

<font color="red">
<input type="button" value="Up" onclick="clickBtnUp()"/> <br>
size: <div id="div01"> </div>
<input type="button" value="Down" onclick="clickBtnDw()"> <font> <br>
<canvas width="550" height="550" id="startUp02" style="background-color:rgba(255, 255, 255, 1.0);"> </canvas>

<script>
var doc01= document.getElementById("div01")
var canvas = document.getElementById('startUp02');
var context = canvas.getContext('2d');
var x = 20;
var y = 200;
var size = 5;
var vect_x = 1;
var vect_y = 1;

var rightPressed = false;
var leftPressed = false;

document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);

function keyDownHandler(e) {
    if(e.key == "Right" || e.key == "ArrowRight") {
         rightPressed = true;
    }
    else if(e.key == "Left" || e.key == "ArrowLeft") {
        leftPressed = true;
    }
}
function keyUpHandler(e) { if(e.key == "Right" || e.key == "ArrowRight") {
    rightPressed = false;
    }
else if(e.key == "Left" || e.key == "ArrowLeft") {
    leftPressed = false;
    }
}

function clickBtnUp(){
    size += 5;
    doc01.innerHTML = size;
}

function clickBtnDw(){
    if(size > 5){
        size -= 5;
    }
    doc01.innerHTML = size;
}

function draw(){
    context.globalCompositeOperation = "source-over";
    context.fillStyle = "black";
    context.globalAlpha = 1.0;
    context.fillRect(0, 0, canvas.width, canvas.height);

    context.beginPath();
    context.globalCompositeOperation = "lighter";
    context.fillStyle = "white";
    context.globalAlpha = 0.5;
    context.arc(x, y, size, 0, Math.PI*2, false);
    context.fill();

    x += vect_x;
    y += vect_y;
    vect_y=vect_y + 0.25;

    if(x < 0 + size){
        x = size; 
        vect_x *= -1;
        if(vect_x>50)vect_x=50;
    }
    if(x > canvas.width - size){
        x = canvas.width - size;
        vect_x *= -1;
        if(vect_x>50)vect_x=50;
    }
    if(y < 0 + size){
        y = size;
        vect_y = 0;
    }
    if(y > canvas.height - size){
        y = canvas.height-size;
        vect_y *= -1;
    }

    if(rightPressed && vect_x
        vect_x *= 1.125;
        vect_y *= 1.125;
    }
    if(leftPressed){
        vect_x /= 1.125;
        vect_y /= 1.125;
    }
    context.fillStyle = "red";
    context.font="20px sans-serif";
    context.fillText("x: "+x+" ", 20, 30, 500);
    context.fillText("y: "+y+" ", 20, 50, 500);
    context.fillText("vect_x: "+vect_x+" ",20, 70, 500);
    context.fillText("vect_y: "+vect_y+" ",20, 90, 500);
}
setInterval(draw,32);
</script>


Ende;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

やらない理由

2021年01月27日 10時14分25秒 | 日記

速度超過は事故起こした時に被害が大きいんだから

GPSとかETCと連動させて自動的に速度制限したらよかろうと

鉄道ならATS的なものがあるんだから 自動車やバイクでもやりゃ良いだろうと

やらない理由が特にないと思うぞ

信号だって黄色になるタイミングと距離から自動停止させても良かろうと

信号が赤になりそうだからって加速するバカも減るだろうと

まだ新型コロナウイルスの死者よか交通事故の死者の方が多いんだから

交通事故対策の方が優先順位が高いと思うけどな

 

 ◇追記:交通事故死亡者は年間3000人台にまで減少していました

充分多いけどね


Ende;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする