[n00b]Character/enemy movement synchronization
Author |
Message |
Nigrev
|
Posted: Tue Dec 05, 2006 9:38 pm Post subject: [n00b]Character/enemy movement synchronization |
|
|
It's pretty hard to find a specific question using the surtshenjin. So I resort to posting.
I'm at a predicament, which most of you pros probably have been through when the almighty said " PROCESSES ARE THE DEVIL h4xx0rz !!!11".
You will see here, with incomplete comments:
code: |
%==================
%Movement test program 001
%By:Nigrev
%==================
%importing external modules/setscreen/odd var declaration
import ("BSprite.tu") %external Bacchus Sprites module. Thnx to Bacchus of Compsci!!!
setscreen ("graphics:800;600, nobuttonbar, offscreenonly,title:movetest")
var background, speedboots, sbhave, sbx, sby, num : int
background := Pic.FileNew ("grass.bmp")
Pic.Draw (background, 1, 1, picMerge)
%================================%
%Creation of the type sprite (Sprt) and composite data of sprite
type Sprt :
record
pic, x, y, rlmovesp1, rlmovesp2, udmovesp, movesp : int
end record
%=================================%
%Creation of paladin
var paladin : Sprt
paladin.x := 100 %intitialize x position at 100
paladin.y := 100 %intitialize y position at 100
paladin.pic := BSprite.New (paladin.x, paladin.y, "pally1.bmp") %initialize sprite picture
paladin.rlmovesp1 := 10 %\
paladin.rlmovesp2 := 5 % > movement speed modifications
paladin.udmovesp := 15 %/
%=================================%
%Creation of the extra sprites
var enemy1 : Sprt
enemy1.x := 500
enemy1.y := 100
enemy1.pic := BSprite.New (enemy1.x, enemy1.y, "summoner2.bmp")
enemy1.movesp := 30
%=================================%
var chars : array char of boolean
sbx := 500
sby := 400
sbhave := 0
speedboots := BSprite.New (sbx, sby, "speedboots.bmp")
View.Update
procedure pallymove
Input.KeyDown (chars)
if chars (KEY_UP_ARROW) then
BSprite.Change ("pally6.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
end for
BSprite.Change ("pally6-2.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
end for
elsif chars (KEY_DOWN_ARROW) then
BSprite.Change ("pally5.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
end for
BSprite.Change ("pally5-2.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
end for
elsif chars (KEY_RIGHT_ARROW) then
BSprite.Change ("pally3-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
end for
BSprite.Change ("pally7-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
end for
BSprite.Change ("pally2-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
end for
BSprite.Change ("pally7-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
end for
BSprite.Change ("pally1-2.bmp", paladin.pic)
View.Update
elsif chars (KEY_LEFT_ARROW) then
BSprite.Change ("pally3.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
end for
BSprite.Change ("pally7.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
end for
BSprite.Change ("pally2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
end for
BSprite.Change ("pally7.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
end for
BSprite.Change ("pally1.bmp", paladin.pic)
View.Update
end if
if paladin.x = sbx and paladin.y = sby then
sbhave := 1
BSprite.Change ("emptysprite.bmp", speedboots)
end if
if sbhave = 1 then
paladin.udmovesp := 3
paladin.rlmovesp1 := 2
paladin.rlmovesp2 := 3
end if
end pallymove
procedure enemymove1
if num = 1 then
for i : 1 .. 20
enemy1.x += 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
end for
end if
if num = 2 then
for i : 1 .. 20
enemy1.x -= 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
end for
end if
if num = 3 then
for i : 1 .. 20
enemy1.y += 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
end for
end if
if num = 4 then
for i : 1 .. 20
enemy1.y -= 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
end for
end if
end enemymove1
loop
randint (num, 1, 4)
enemymove1
pallymove
if paladin.x >= maxx then
paladin.x := 0
elsif paladin.x <= 0 then
paladin.x := maxx
end if
if paladin.y >= maxy then
paladin.y := 0
elsif paladin.y <= 0 then
paladin.y := maxy
end if
end loop
|
Monster of a code, innit?
Sorry about the pictures, modify it a bit so you can run it without messing with the movement mechanism.
As you can see, it plays like a damn board game . You gotta wait for the enemy to move before the paladin can go another space . How do you (un)synchronize both the movements without the use of processes, and (hopefully) no palllymove/enemy1move procedure fusion? I need a workaround based on my skill level, unless it is impossible. Then tell me the books to read.
This is for an assignment, so plx no code rewriting. And plx no "LEARN CLASSES, [s]n00b[/s] " or whatnot, because it's due January; I have limited time to learn now (i wish this was not so ).
I'm on basically pre-pre-pre-pre-alphastage.
Thnx. |
|
|
|
|
|
Sponsor Sponsor
|
|
|
ericfourfour
|
Posted: Tue Dec 05, 2006 10:32 pm Post subject: (No subject) |
|
|
Don't worry, most people won't recommend classes to someone who has trouble spelling search engine.
What you basically need is a variable that keeps track of each characters movement. Every frame update that variable for each character. You should also disable the character's ability to change directions while it is moving.
Say you want to move 16 pixels at 1 pixel/frame (it will take 16 frames to complete the character's movement). You would create a variable to store the character's movement and a flag that prevents the character from changing directions.
A bit of code to work with.
code: | var movement : array 1 .. amount_of_characters of int %Make this a real if you get good at it.
var max_movement : int %This can be an array if the characters travel different distances
var controls_disabled : array 1 .. amount_of_characters of boolean %Disables the characters controls
var moving : array 1 .. amount_of_characters of boolean %True if the character is moving
loop
if not controls_disabled (character)
check controls
if a moving control was used
movement (current_character) := 0
controls_disabled (current_character) := true
if moving (current_character)
movement (current_character) += 1
if movement (current_character) > max_movement
moving (current_character) := false
controls_disabled (current_character) := false
end loop | If you look closely you will notice that moving is always the same as controls_disabled so you only really need one. |
|
|
|
|
|
Nigrev
|
Posted: Thu Dec 07, 2006 9:52 pm Post subject: (No subject) |
|
|
This helps how? Disable why? I don't get the code...
The character does not change directions while moving anyway(which one are you talking about?)
So.. okay, i keep track of the movements, then disable the control if it goes to far?
This is what I have so far
code: |
%importing external modules/setscreen/odd var declaration
import ("BSprite.tu") %external Bacchus Sprites module. Thnx to Bacchus of Compsci!!!
setscreen ("graphics:800;600, nobuttonbar, offscreenonly,title:movetest")
var background, speedboots, sbhave, sbx, sby, num : int
background := Pic.FileNew ("grass.bmp")
Pic.Draw (background, 1, 1, picMerge)
%============================
%Some guy on compsci told me to use this, still testing what it does
var movement : array 1 .. 3 of int
var max_movement : int
var disable_controls : array 1 .. 3 of boolean
var moving : array 1 .. 3 of boolean
max_movement := 20
movement (1) := 0
movement (2) := 0
disable_controls(1):=false
%================================%
%Creation of the type sprite (Sprt) and composite data of sprite
type Sprt :
record
pic, x, y, rlmovesp1, rlmovesp2, udmovesp, movesp : int
end record
%=================================%
%Creation of paladin
var paladin : Sprt
paladin.x := 100 %intitialize x position at 100
paladin.y := 100 %intitialize y position at 100
paladin.pic := BSprite.New (paladin.x, paladin.y, "pally1.bmp") %initialize sprite picture
paladin.rlmovesp1 := 10 %\
paladin.rlmovesp2 := 5 % > movement speed modifications
paladin.udmovesp := 15 %/
%=================================%
%Creation of the extra sprites
var enemy1 : Sprt
enemy1.x := 500
enemy1.y := 300
enemy1.pic := BSprite.New (enemy1.x, enemy1.y, "summoner2.bmp")
enemy1.movesp := 30
%=================================%
var chars : array char of boolean
sbx := 500
sby := 400
sbhave := 0
speedboots := BSprite.New (sbx, sby, "speedboots.bmp")
View.Update
procedure pallymove
Input.KeyDown (chars)
if chars (KEY_UP_ARROW) then
moving (1):= true
BSprite.Change ("pally6.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally6-2.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
movement (1) += 1
end for
elsif chars (KEY_DOWN_ARROW) then
moving (1):= true
BSprite.Change ("pally5.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally5-2.bmp", paladin.pic)
for i : 1 .. 10
paladin.y := paladin.y - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.udmovesp)
View.Update
movement (1) += 1
end for
elsif chars (KEY_RIGHT_ARROW) then
moving (1):= true
BSprite.Change ("pally3-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally7-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally2-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally7-2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x + 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally1-2.bmp", paladin.pic)
View.Update
elsif chars (KEY_LEFT_ARROW) then
moving (1):= true
BSprite.Change ("pally3.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally7.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally2.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp1)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally7.bmp", paladin.pic)
for i : 1 .. 5
paladin.x := paladin.x - 1
BSprite.Move (paladin.x, paladin.y, paladin.pic)
Time.Delay (paladin.rlmovesp2)
View.Update
movement (1) += 1
end for
BSprite.Change ("pally1.bmp", paladin.pic)
View.Update
end if
moving := false
if paladin.x = sbx and paladin.y = sby then
sbhave := 1
BSprite.Change ("emptysprite.bmp", speedboots)
end if
if sbhave = 1 then
paladin.udmovesp := 3
paladin.rlmovesp1 := 2
paladin.rlmovesp2 := 3
end if
end pallymove
procedure enemymove1
if num = 1 then
moving (2):=true
for i : 1 .. 20
enemy1.x += 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
movement (2) += 1
end for
end if
if num = 2 then
moving (2):=true
for i : 1 .. 20
enemy1.x -= 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
movement (2) += 1
end for
end if
if num = 3 then
moving (2):=true
for i : 1 .. 20
enemy1.y += 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
movement (2) += 1
end for
end if
if num = 4 then
moving (2):=true
for i : 1 .. 20
enemy1.y -= 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
Time.Delay (enemy1.movesp)
View.Update
movement (2) += 1
end for
end if
end enemymove1
loop
randint (num, 1, 4)
enemymove1
pallymove
if paladin.x >= maxx then
paladin.x := 0
elsif paladin.x <= 0 then
paladin.x := maxx
end if
if paladin.y >= maxy then
paladin.y := 0
elsif paladin.y <= 0 then
paladin.y := maxy
end if
end loop
|
|
|
|
|
|
|
ericfourfour
|
Posted: Thu Dec 07, 2006 10:30 pm Post subject: (No subject) |
|
|
This is how you should try to solve this problem. Think of a way that does not require for loops. The way I suggest is to instead of using for loops, update the characters position every iteration of the main loop. This means you will need to keep track of every characters position. The position I'm referring to is the movement that is happening in the for loops. |
|
|
|
|
|
Nigrev
|
Posted: Fri Dec 08, 2006 10:34 am Post subject: (No subject) |
|
|
how do I get my character to go a full 20 pixels if i do not have a for loop?
also, my character changes sprites every 10 or 5 pixels to immitate walking steps. I don't want to move the sprite every ten or five pixels, I want it updated every 1 pixel for smooth animation, that's why i used the for loops. |
|
|
|
|
|
Nigrev
|
Posted: Fri Dec 08, 2006 2:09 pm Post subject: (No subject) |
|
|
This sucks, i can't edit my post. anyway, how is controls_disabled supposed to work? y:=y? |
|
|
|
|
|
ericfourfour
|
Posted: Fri Dec 08, 2006 8:14 pm Post subject: (No subject) |
|
|
Instead of moving them in a for loop move them in the main loop. It requires a bit more logical thinking but is more flexible. If you look at the for loop you will see that you declare a variable that either increases or decreases. Think of the main loop as a giant for loop except you have to make actual variables that increase or decrease for every character. Do you follow me yet?
And don't worry about disabling the character's controls yet. You will understand why you need it when you get the first part working. |
|
|
|
|
|
Nigrev
|
Posted: Sat Dec 09, 2006 9:25 am Post subject: (No subject) |
|
|
i hear ya.
code: |
%importing external modules/setscreen/odd var declaration
import ("BSprite.tu") %external Bacchus Sprites module. Thnx to Bacchus of Compsci!!!
setscreen ("graphics:800;600, nobuttonbar, offscreenonly,title:movetest")
var background, speedboots, sbhave, sbx, sby, num : int
background := Pic.FileNew ("grass.bmp")
Pic.Draw (background, 1, 1, picMerge)
%============================
%Some guy on compsci told me to use this, still testing what it does
var disable_controls : array 1 .. 3 of boolean
var moving : array 1 .. 3 of boolean
disable_controls (1) := false
disable_controls (2) := false
%================================%
%Creation of the type sprite (Sprt) and composite data of sprite
type Sprt :
record
pic, x, y, movesp, movement : int
up, down, left, right : boolean
end record
%=================================%
%Creation of paladin
var paladin : Sprt
paladin.x := 100 %intitialize x position at 100
paladin.y := 100 %intitialize y position at 100
paladin.pic := BSprite.New (paladin.x, paladin.y, "pally1.bmp") %initialize sprite picture
paladin.movesp := 1
paladin.up := false
paladin.down := false
paladin.right := false
paladin.left := false
paladin.movement := 0
%=================================%
%Creation of the extra sprites
var enemy1 : Sprt
enemy1.x := 500
enemy1.y := 300
enemy1.pic := BSprite.New (enemy1.x, enemy1.y, "summoner2.bmp")
enemy1.movesp := 1
enemy1.movement := 0
randint (num, 1, 4)
%=================================%
var chars : array char of boolean
sbx := 500
sby := 400
sbhave := 0
speedboots := BSprite.New (sbx, sby, "speedboots.bmp")
View.Update
procedure pallymove
if paladin.up = true then
if paladin.movement <= 10 then
BSprite.Change ("pally6.bmp", paladin.pic)
elsif paladin.movement > 10 then
BSprite.Change ("pally6-2.bmp", paladin.pic)
end if
paladin.y += paladin.movesp
paladin.movement += paladin.movesp
BSprite.Move (paladin.x, paladin.y, paladin.pic)
View.Update
elsif paladin.down = true then
if paladin.movement <= 10 then
BSprite.Change ("pally5.bmp", paladin.pic)
elsif paladin.movement > 10 then
BSprite.Change ("pally5-2.bmp", paladin.pic)
end if
paladin.y -= paladin.movesp
BSprite.Move (paladin.x, paladin.y, paladin.pic)
View.Update
paladin.movement += paladin.movesp
elsif paladin.right = true then
if paladin.movement <= 5 then
BSprite.Change ("pally3-2.bmp", paladin.pic)
elsif paladin.movement > 5 and paladin.movement < 11 then
BSprite.Change ("pally7-2.bmp", paladin.pic)
elsif paladin.movement > 10 and paladin.movement < 16 then
BSprite.Change ("pally2-2.bmp", paladin.pic)
elsif paladin.movement > 15 and paladin.movement < 21 then
BSprite.Change ("pally7-2.bmp", paladin.pic)
end if
paladin.x += paladin.movesp
BSprite.Move (paladin.x, paladin.y, paladin.pic)
View.Update
paladin.movement += paladin.movesp
elsif paladin.left = true then
if paladin.movement <= 5 then
BSprite.Change ("pally3.bmp", paladin.pic)
elsif paladin.movement > 5 and paladin.movement <= 10 then
BSprite.Change ("pally7.bmp", paladin.pic)
elsif paladin.movement > 10 and paladin.movement <= 15 then
BSprite.Change ("pally2.bmp", paladin.pic)
elsif paladin.movement > 15 and paladin.movement <= 20 then
BSprite.Change ("pally7.bmp", paladin.pic)
end if
paladin.x := paladin.x - paladin.movesp
BSprite.Move (paladin.x, paladin.y, paladin.pic)
View.Update
paladin.movement += paladin.movesp
View.Update
end if
Input.KeyDown (chars)
if chars (KEY_UP_ARROW) and disable_controls (1) = false then
paladin.up := true
disable_controls (1) := true
elsif chars (KEY_DOWN_ARROW) and disable_controls (1) = false then
paladin.down := true
disable_controls (1) := true
elsif chars (KEY_RIGHT_ARROW) and disable_controls (1) = false then
paladin.right := true
disable_controls (1) := true
elsif chars (KEY_LEFT_ARROW) and disable_controls (1) = false then
paladin.left := true
disable_controls (1) := true
end if
if paladin.movement >= 20 then
disable_controls (1) := false
paladin.movement := 0
end if
end pallymove
procedure enemymove1
if num = 1 and disable_controls (2) = false then
enemy1.x += enemy1.movesp
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
View.Update
enemy1.movement += enemy1.movesp
elsif num = 2 and disable_controls (2) = false then
enemy1.x -= enemy1.movesp
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
View.Update
enemy1.movement += enemy1.movesp
elsif num = 3 and disable_controls (2) = false then
enemy1.y += 1
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
View.Update
enemy1.movement += 1
elsif num = 4 and disable_controls (2) = false then
enemy1.y -= enemy1.movesp
BSprite.Move (enemy1.x, enemy1.y, enemy1.pic)
View.Update
enemy1.movement += enemy1.movesp
end if
if enemy1.movement >= 20 then
disable_controls (2) := true
enemy1.movement := 0
end if
if enemy1.movement = 0 then
randint (num, 1, 4)
end if
end enemymove1
loop
disable_controls (1) := false
disable_controls (2) := false
enemymove1
pallymove
if paladin.x >= maxx then
paladin.x := 0
elsif paladin.x <= 0 then
paladin.x := maxx
end if
if paladin.y >= maxy then
paladin.y := 0
elsif paladin.y <= 0 then
paladin.y := maxy
end if
if paladin.x > (sbx - 20) and paladin.x < (sbx + 20) and paladin.y > (sby - 20) and paladin.y < (sby + 20) then
sbhave := 1
BSprite.Change ("emptysprite.bmp", speedboots)
end if
if sbhave = 1 then
paladin.movesp := 2
end if
end loop
|
but now if the controllable character is at a standstill, the other sprites move faster than wanted. do i have to put an extra piece of coding in on the players part to give an extra delay when not moving? |
|
|
|
|
|
Sponsor Sponsor
|
|
|
ericfourfour
|
Posted: Sat Dec 09, 2006 7:07 pm Post subject: (No subject) |
|
|
Just one suggestion before you continue. Make it so you only have 1 View.Update, 1 cls (or Draw.FillBox over the screen), and one delay in the program. Make sure those go in the main loop.
The order I always use is:
code: | update variables
draw everything
View.Update
Time.Delay (1000 / fps)
cls |
About the characters going faster. With the above implemented into your code all your characters will need is a speed variable which is how many pixels they move per frame.
If you get that implemented then you may want to make the characters speed a real number. That way they can move at a more precise speed. You would need to use the round () function though (it rounds a real number to an integer number). |
|
|
|
|
|
Nigrev
|
Posted: Sun Dec 10, 2006 5:55 pm Post subject: (No subject) |
|
|
i don't use cls, hehe |
|
|
|
|
|
|
|