How to paint an element in screen using javascript?

Click For Summary
SUMMARY

This discussion focuses on implementing movement for a bat element in a JavaScript-based game using keyboard input. The user seeks to move the bat left and right by updating its position based on arrow key presses. The solution involves calculating the new position using the current position and direction, and then applying these coordinates to the bat's CSS properties. The discussion highlights the necessity of using absolute positioning for smooth movement, as opposed to CSS grid rendering.

PREREQUISITES
  • JavaScript event handling with addEventListener
  • Understanding of CSS positioning, specifically absolute and relative positioning
  • Basic knowledge of DOM manipulation in JavaScript
  • Familiarity with game development concepts, particularly movement mechanics
NEXT STEPS
  • Implement CSS absolute positioning for game elements
  • Explore JavaScript functions for updating element styles dynamically
  • Learn about game loop mechanics for smoother animations
  • Investigate collision detection techniques for game elements
USEFUL FOR

Frontend developers, game developers, and anyone interested in creating interactive web applications using JavaScript and CSS.

shivajikobardan
Messages
637
Reaction score
54
TL;DR
paint element in javascript
JavaScript:
<div class="body">
    <div id="board">
      <div id="bat" class="bat"></div>
      <div id="ball" class="ball"></div>
    </div>
  </div>

This is my HTML.
I've done CSS For all of them and generated this:
pFgfWPrgsTpelep9BMMcp24Uw8Qw0vuKJbvqH_5RBTCLwd7khQ.png

Now, I want the bat to move left and right when I press arrow keys.

JavaScript:
window.addEventListener("keydown", function (e) {

  switch (e.key) {
    case "ArrowLeft":
      batDir.x = -1;
      batDir.y = 0;
      paintBat(batDir.x, batDir.y);
      break;
    case "ArrowRight":
      batDir.x = 1;
      batDir.y = 0;
      paintBat(batDir.x, batDir.y);
      break;

  }
})

My goal is to paint the bat at new position. I'm wondering how to do it.

The logic should be

newBatPosition.x=oldBatPosition.x+batDirection.x
newBatPosition.y=oldBatPosition.y+batDirection.y

But what will do the job of painting newBatPosition.x and newBatPosition.y is what I'm not clear of. I'm not using canvas.

Plus, what'll be the oldBatPosition? I've used CSS to paint them. So, I'm wondering how do I get oldBatPosition coordinates as well.

I just made a similar project using tutorial and it's just disheartening that I can't make this project.

 
Technology news on Phys.org
Normally we would do this by changing the bottom and left CSS styles on the bat element: this relies on the bat and ball being absolutely positioned children of a (relatively positioned) parent element rather than the CSS grid based rendering you used for Snake (which won't work for the smooth motion you need for bat and ball games).
JavaScript:
batElement.style.bottom = batPosition.y;
batElement.style.left = batPosition.x;
 

Similar threads

  • · Replies 11 ·
Replies
11
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 21 ·
Replies
21
Views
6K
  • · Replies 13 ·
Replies
13
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 1 ·
Replies
1
Views
4K
Replies
40
Views
4K
  • · Replies 12 ·
Replies
12
Views
4K