Sometimes it comes in really handy to know exactly what the limits of the inside of a window are. For example, if your Liberty BASIC program opens a window that is 500x400 pixels and you want to draw graphics that fit precisely or you are creating a game.. Think of Space Invaders where the aliens march back and forth on the screen! You need to know the precise inner dimensions of the window so you need to know how thick the window frame is and also the title bar on top of the window.
The trouble is, these measurements are not going to be the same from one version of Windows to another, and they change if you modify your system font sizes.
So what to do? Windows provides us a way to get the dimensions of the inside of the window by using the GETWINRECT function.
WindowWidth = 500
WindowHeight = 400
open "get client rectangle" for window as #w
'Get the window handle
hndl = hwnd(#w)
'Declare the struct which will be used to get the window client rectangle
struct winRect, orgX as long, orgY as long, cornerX as long, cornerY as long
'Make the GetClientRect call
calldll #user32, "GetClientRect", hndl as ulong, winRect as struct, result as Boolean
'Grab the width and height from the struct
wide=winRect.cornerX.struct-winRect.orgX.struct
high=winRect.cornerY.struct-winRect.orgY.struct
notice "inside of window frame width = "; wide; " height = "; high
Showing posts with label video game development. Show all posts
Showing posts with label video game development. Show all posts
Thursday, June 30, 2016
Sunday, January 10, 2016
Lunar lander revisited
Liberty BASIC comes with a nice introduction to video games called lander.bas.
- It's a good example of a timer driven game.
- It uses sprites which are actually generated on the fly using turtle graphics.
- It also shows proper technique of structured programming.
So I have some ideas that I am thinking about implementing to update it and make it an even more complete video game example:
- Add sound effects including ambient sounds, rocket motor noise and crash explosion.
- Animate the rocket motor so you can see rocket exhaust coming out.
- Add some flying space junk sprites that you need to avoid while trying to land.
- Add a colored starfield in the background.
Looking forward to this! Check back for updates!
Subscribe to:
Posts (Atom)