Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

CTX is not showing

i have been trying to get the ctx to work for a school thing, but it is not even showing up when i run it. i figured it might ask here due to the fact my teacher does not want to help me.

i have tried going over the video provided several times in order to see what i did wrong, but i could not figure it out.
i’m just trying to make a simple snake game, and the fact this isn’t working is driving me up the wall.
help.

i am going to try to post the code like it should show, i don’t know if it will work.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel




<script>

window.onload = function(){
    canvas = document.getElementById("game");
    ctx = canvas.getContext('2d');
    document.addEventListener("keydown", keypush);
    setInterval(game_function, 1000/15);

}

x_pos =10; // start lol
y_pos =10;

x_vel = 0;
y_vel = 0;


grid_size = 40; //the grid, ye idjut
tile_count = 40;

apple_x =15;
apple_y =15;

trail=[]; //has tail positions
tail_length = 5;


function game_function() {

    //velocity based postion lol

    x_pos = x_pos + x_vel
    y_pos = y_pos + y_vel

// wrap, but not the kind you eat

if(x_pos<0) {
    x_pos = tile_count-1;
}

if(y_pos<0) {
    y_pos = tile_count-1;
}

if(x_pos> tile_count -1) {
    x_pos = 0;
}


if(y_pos> tile_count -1) {
    y_pos = 0;
}

function keypush(){

}




//background color
ctx.fillStyle = "black"
ctx.fillRect(0,0, canvas.width, canvas.height);

//snake color
ctx.fillStyle = "lime";
// segment coloring junk
for(var i=0; i < trail.length; i++)
{
    ctx.fillRect(trail[i].x * grid_size, trail[i].y * grid_size, grid_size -1, grid_size -1);
}

//move
trail.push({x:x_pos, y:y_pos});

//delete the previous position
while(trail.length > tail.length) {
    trail.shift();

   

}
}

</script>

>Solution :

There are several small problems:

  1. function keypush is declared inside of game_function
  2. starting velocity is 0, so snake is not moving
  3. tail.length is not the same as tail_length
var x_pos = 10;
var y_pos = 10;
var x_vel = 1;
var y_vel = 0;
var tile_count = 40;
var tail=[];
var tail_length = 5;

var canvas;
var ctx;

function game_function() {
    // movement
    x_pos += x_vel
    y_pos += y_vel

    if(x_pos<0) x_pos = tile_count-1;
    if(y_pos<0) y_pos = tile_count-1;
    if(x_pos>= tile_count) x_pos = 0;
    if(y_pos>= tile_count) y_pos = 0;
    
    tail.push({x:x_pos, y:y_pos});
    while(tail.length > tail_length) tail.shift();

    // rendering
    var h_scale = (canvas.width*1.0 / tile_count);
    var v_scale = (canvas.height*1.0 / tile_count);
    
    ctx.fillStyle = "black"
    ctx.fillRect(0,0, canvas.width, canvas.height);

    ctx.fillStyle = "lime";
    for(var i=0; i < tail.length; i++)
        ctx.fillRect(tail[i].x * h_scale, tail[i].y * v_scale, h_scale, v_scale);

}

function keypush(e){
    switch(e.code) {
        case 'ArrowUp': x_vel=0; y_vel=-1; break;
        case 'ArrowDown': x_vel=0; y_vel=1; break;
        case 'ArrowLeft': x_vel=-1; y_vel=0; break;
        case 'ArrowRight': x_vel=+1; y_vel=0; break;
    }
}

window.onload = function(){
    canvas = document.getElementById("game");
    ctx = canvas.getContext('2d');
    document.addEventListener("keydown", keypush);
    setInterval(game_function, 1000/15);
}
<canvas id="game" width="160" height="160">
</canvas>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading