Making a Border in turing
Author |
Message |
orbez
|
Posted: Sat Dec 07, 2013 7:35 pm Post subject: Making a Border in turing |
|
|
What is it you are trying to achieve?
I am attempting to make a game kinda like pac man. In this game a yellow dot can not leave the screen.
What is the problem you are having?
I made a border but you can still exit the screen by spamming/holding an arrow key down, is there a way to change that?
Describe what you have tried to solve this problem
I have tried bouncing the dot back by making the delta x and/or delta y the opposite but since then I have
been specific introductions that the dot much stop at the border.
I also expanded the border but all that does is just delay the out come.
(only included part of my program as it is somewhat long)
Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
Turing: |
%Border
if X <= (R1 + 1) or X >= maxx - (R1 + 1) then
DX := 0
end if
if Y <= (R1 + 1) or Y >= maxy - (R1 + 1) then
DY := 0
end if
%Movement/speed
if hasch then
getch (key )
if ord (key ) = 205 then
DX := speed
DY := 0
elsif ord (key ) = 203 then
DX := -speed
DY := 0
elsif ord (key ) = 200 then
DX := 0
DY := speed
elsif ord (key ) = 208 then
DX := 0
DY := -speed
end if
end if
|
Please specify what version of Turing you are using
4.1.1 |
|
|
|
|
![](images/spacer.gif) |
Sponsor Sponsor
![Sponsor Sponsor](templates/subSilver/images/ranks/stars_rank5.gif)
|
|
![](images/spacer.gif) |
Insectoid
![](http://compsci.ca/v3/uploads/user_avatars/13760332514cbd0ce972eaa.jpg)
|
Posted: Sat Dec 07, 2013 7:39 pm Post subject: RE:Making a Border in turing |
|
|
If pac-man ever crosses the border, simply teleport him back to the correct side of it. If the left border is x = 0, then 'if (pacmanX <0) then packmanX := 0'. Tweak to suit your own game. |
|
|
|
|
![](images/spacer.gif) |
orbez
|
Posted: Sat Dec 07, 2013 7:52 pm Post subject: Re: Making a Border in turing |
|
|
I have never thought about it that way, thanks man. |
|
|
|
|
![](images/spacer.gif) |
Zren
![](http://compsci.ca/v3/uploads/user_avatars/1110053965512db6185954b.png)
|
Posted: Sat Dec 07, 2013 8:01 pm Post subject: RE:Making a Border in turing |
|
|
Don't move Pacman until you are sure the destination is in bounds.
Eg:
Turing: |
type Vector2D :
record
x, y : real
end record
var pacman :
record
position : Vector2D
velocity : Vector2D
end record
var destination : Vector2D
desination.x := pacman.position.x + pacman.velocity.x
desination.y := pacman.position.y + pacman.velocity.y
% Collision Detection: Walls
if ... then % If destination is in bounds
% Move pacman to the destination
pacman.position := destination
end if
|
This way, he's never out of bounds to begin with. Unless of course the walls move and the bounds change from one iteration to the next. |
|
|
|
|
![](images/spacer.gif) |
Zren
![](http://compsci.ca/v3/uploads/user_avatars/1110053965512db6185954b.png)
|
Posted: Sun Dec 08, 2013 2:25 pm Post subject: RE:Making a Border in turing |
|
|
Version without records/types in case they threw you for a loop.
Turing: |
var pacmanX, pacmanY, pacmanVelX, pacmanVelY : int
loop
%%% Input
% ...
%%% Logic
var pacmanDestinationX, pacmanDestinationY : int
pacmanDestinationX := pacmanX + pacmanVelX
pacmanDestinationY := .. .
if 0 <= pacmanDestinationX and pacmanDestinationX <= maxx and .. . then
% Move pacman
pacmanX := pacmanDestinationX
else
% Don't move pacman. As he would move into a wall.
% You will most likely have a space between pacman and
% the wall in this case. Insectoid's method to move
% pacmanX to be just touching the left wall (pacmanX=0)
% if pacmanX is past the wall (pacmanX < 0), is the
% easiest way to deal with this.
end if
%%% Draw Frame
% ...
end loop
|
More on records/types:
There's the Turing Documention on those keywords: record, type
There's also this tutorial Records Part I Declaration and other Introductory Concepts which is part of the greater tutorial called The Turing Walkthrough. |
|
|
|
|
![](images/spacer.gif) |
orbez
|
Posted: Sun Dec 08, 2013 3:44 pm Post subject: Re: Making a Border in turing |
|
|
Yeah, this is allot better, I came up with something similar but your code is much smaller and simpler, thanks. |
|
|
|
|
![](images/spacer.gif) |
|
|