Ok, I used someone's pixel perfect collision code(cant remember who's sorry)...and I put if collision=1 move sprite 1,2
This causes my sprite to move 2, even though it's not touching the sprite correctly...here is the code.
`###############################################################
`###############################################################
`###############################################################
`#########################MAIN MENU SECTION START###############
`###############################################################
`###############################################################
`###############################################################
sync on
cls
hide mouse
set window size 640,480
load image "Mediacursor.bmp",1
load image "MediaNew_Game_Unpressed.bmp",2
load image "MediaLoad_Game_Unpressed.bmp",3
load image "MediaNew_Game_Pressed.bmp",4
load image "MediaLoad_Game_Pressed.bmp",5
load image "Mediabeginning story.bmp",6
load image "MediaStart_Menu_Background.bmp",7
load music "MediaFairytale_Waltz(2).wav",1
sprite 2,217,205,2
sprite 3,217,255,3
sprite 4,217,205,4
sprite 5,217,255,5
set sprite priority 4,1
set sprite priority 5,1
sprite 7,0,0,7
while 1<2
mx=MOUSEX()
my=MOUSEY()
SPRITE 1,mx,my,1
set sprite priority 1,10
if mx=>217 and mx=<320 and my=>205 and my=<240
sprite 4,217,205,4
set sprite priority 4,10
sync
else
set sprite priority 4,1
set sprite priority 2,10
sprite 2,217,205,2
sync
endif
if mx=>217 and mx=<320 and my=>255 and my=<290
sprite 5,217,255,5
set sprite priority 5,10
sync
else
set sprite priority 5,1
set sprite priority 3,10
sprite 3,217,255,3
sync
endif
if mouseclick()=1
if mx=>217 and mx=<320 and my=>205 and my=<240
cls
gosub New_Game
sync
endif
if mx=>100 and mx=<120 and my=>200 and my=<257
sync
endif
endif
sync
endwhile
New_Game:
hide sprite 1
hide sprite 2
hide sprite 3
hide sprite 4
hide sprite 5
hide sprite 7
cls
text$="What will be your character's name?"
create bitmap 31,screen width(),screen height()
text 0,0,text$
get image 31,0,0,text width(text$),text height(text$),1
delete bitmap 31
sprite 9000,x,y,31
sprite 9000,0,0,31
input " ",Player_Hero_Name$
cls
show sprite 7
delete sprite 9000
text$=Player_Hero_Name$ + " Starts his journey soon."
create bitmap 31,screen width(),screen height()
text 0,0,text$
get image 31,0,0,text width(text$),text height(text$),1
delete bitmap 31
color backdrop RGB(0,0,0)
x=0
y=480
xB=x+209
yB=888
sprite 6,x,y,6
sprite 9000,xB,yB,31
sync
play music 1
WHILE spacekey()<=0
for beginningstory=0 to 480
move sprite 6,0.001
move sprite 9000,0.001
next beginningstory
wait 100
sync
loop music 1
ENDWHILE
Start_New_Game:
for x=1 to 7
delete sprite x
next x
delete sprite 9000
delete music 1
cls
`###############################################################
`###############################################################
`###############################################################
`#########################MAIN MENU SECTION END#################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`#########################DECLARE VARIABLES SECTION START#######
`###############################################################
`###############################################################
`###############################################################
cls
hide mouse
sync on
backdrop on:color backdrop RGB(0,0,0)
type Character
Name as string
Current_Health as integer
Total_Health as integer
Current_Attack_Level as integer
Total_Attack_Level as integer
Current_Defense_Level as integer
Total_Defense_Level as integer
Current_X_Position as integer
Current_Y_Position as integer
endtype
type Enemy
Name as string
Current_Health as integer
Total_Health as integer
Current_Attack_Level as integer
Total_Attack_Level as integer
Current_Defense_Level as integer
Total_Defense_Level as integer
endtype
Dim TerrainSpots$(300)
CX#=10
CY#=10
MapX#=616
MapY#=480
`###############################################################
`###############################################################
`###############################################################
`#########################DECLARE VARIABLES SECTION END#########
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`#########################CREATE SPRITE SECTION START###########
`###############################################################
`###############################################################
`###############################################################
create animated sprite 1,"Media/test1(2).bmp",3,5,1
create animated sprite 2,"Media/cursor.bmp",1,1,2
create animated sprite 3,"Media/Terrain_Sprites_1.bmp",16,32,3
create animated sprite 4,"Media/Collision_Sprites_1.bmp",16,32,4
`sprites 5-305 used as Collision Sprites
`sprites 306-606 used as Terrain Sprites
sprite 1,100,100,1
set sprite priority 1,10
size sprite 1,32,32
sprite 2,300,300,2
set sprite priority 2,10
Sprite_Count=5
while Sprite_Count<=305
clone sprite 4,Sprite_Count
size sprite Sprite_Count,32,32
inc Sprite_Count
endwhile
Sprite_Count=306
while Sprite_Count<=606
clone sprite 3,Sprite_Count
size sprite Sprite_Count,32,32
inc Sprite_Count
endwhile
size sprite 3,32,32
`###############################################################
`###############################################################
`###############################################################
`#########################CREATE SPRITE SECTION END#############
`###############################################################
`###############################################################
`###############################################################
Terrain_Value=1
Terrain_Sprite_Number=306
Collision_Sprite_Number=5
gosub _Setup_Terrain
x=0
y=0
cls
for Paste_Sprites=1 to 300
if TerrainSpots$(Paste_Sprites)="G"
set sprite frame Terrain_Sprite_Number,1
sprite Terrain_Sprite_Number,x,y,Terrain_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="WF"
set sprite frame Terrain_Sprite_Number,4
sprite Terrain_Sprite_Number,x,y,Terrain_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PLW1"
set sprite frame Collision_Sprite_Number,7
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PHW1"
set sprite frame Collision_Sprite_Number,8
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PLW2"
set sprite frame Collision_Sprite_Number,10
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PVW1"
set sprite frame Collision_Sprite_Number,13
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PLW4"
set sprite frame Collision_Sprite_Number,12
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PHW2"
set sprite frame Collision_Sprite_Number,9
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PLW3"
set sprite frame Collision_Sprite_Number,11
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
if TerrainSpots$(Paste_Sprites)="PVW2"
set sprite frame Collision_Sprite_Number,14
sprite Collision_Sprite_Number,x,y,Collision_Sprite_Number
endif
inc x,32
if x=640
x=0
inc y,32
endif
inc Terrain_Sprite_Number,1
inc Collision_Sprite_Number,1
next Paste_Sprites
while 1<2
`###############################################################
`###############################################################
`###############################################################
`#########################CONTROL SECTION START#################
`###############################################################
`###############################################################
`###############################################################
if upkey()=1
move sprite 1,2
play sprite 1,1,3,50
dec CY#,2
endif
if downkey()=1
move sprite 1,-2
play sprite 1,7,9,50
inc CY#,2
endif
if rightkey()=1
rotate sprite 1,90
move sprite 1,2
rotate sprite 1,0
play sprite 1,4,6,50
inc CX#,2
endif
if leftkey()=1
rotate sprite 1,270
move sprite 1,2
rotate sprite 1,0
play sprite 1,10,12,50
dec CX#,2
endif
`###############################################################
`###############################################################
`###############################################################
`#########################CONTROL SECTION END###################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`#########################COLLISION SECTION START###############
`###############################################################
`###############################################################
`###############################################################
remstart
if sprite collision(1,x)=1
Battle=Battle+1
endif
remend
remstart
for Sprite_Collision_Detection = 5 to 305
if sprite collision(1,Sprite_Collision_Detection)=1
if upkey()=1
move sprite 1,-2
endif
if downkey()=1
move sprite 1,2
endif
if rightkey()=1
rotate sprite 1,270
move sprite 1,2
rotate sprite 1,0
endif
if leftkey()=1
rotate sprite 1,90
move sprite 1,2
rotate sprite 1,0
endif
endif
next Sprite_Collision_Detection
remend
if Battle=1
sprite 1,200,200,1
sprite 2,300,200,2
if rightkey()=1
repeat
sprite 1,200,200,1
until rightkey()=0
endif
if leftkey()=1
repeat
sprite 1,200,200,1
until leftkey()=0
endif
if upkey()=1
repeat
sprite 1,200,200,1
until upkey()=0
endif
if downkey()=1
repeat
sprite 1,200,200,1
until downkey()=0
endif
if ucm=1
if mx>=540 and mx<=640 and my>=0 and my<=20
Attack_Click=1
wait 100
endif
if mx>=540 and mx<=640 and my>=20 and my<=40
Stats_Click=1
if Stats_Click=1
Stats_Click=0
endif
endif
endif
if Attack_Click>0
while a<=100
rotate sprite 1,90
move sprite 1,1
rotate sprite 1,0
play sprite 1,4,6,50
sync
inc a,1
endwhile
Attack_Click=0
endif
sync
endif
`###############################################################
`###############################################################
`###############################################################
`#########################COLLISION SECTION END#################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`######################### MAKE SURE STATS DONT ################
`#########################GO OVER MAX LEVEL SECTION START#######
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`###############################################################
`######################### MAKE SURE STATS DONT ################
`#########################GO OVER MAX LEVEL SECTION END#########
`###############################################################
`###############################################################
remstart
if keystate(23)=1
Toolbar#=Toolbar#+1
wait 100
if Toolbar#=2
Toolbar#=Toolbar#-2
wait 100
endif
endif
if Toolbar#=1
sprite 647,540,0,647
set sprite priority 647,3
sprite 648,540,0,648
set sprite priority 648,4
sprite 649,540,20,649
set sprite priority 649,5
endif
if Toolbar#=0
for toolbar=10 to 12
rotate sprite toolbar,270
move sprite toolbar,640
rotate sprite toolbar,0
next toolbar
endif
##############IGNORE THIS SECTION FOR NOW!remend
mx=MOUSEX()
my=MOUSEY()
SPRITE 2,mx,my,2
set sprite priority 2,10
ucm=MOUSECLICK()
pixelcol(sp1,sp2)
getmax(v1,v2)
getmin(v1,v2)
sync
endwhile
function pixelcol(sp1,sp2)
`load sprite images into memory
sp1=1
for x=5 to 305
sp2=x
make memblock from image 1,sprite image(sp1)
make memblock from image 2,sprite image(sp2)
`store image sizes
sw1=memblock dword(1,0)
sh1=memblock dword(1,4)
sw2=memblock dword(2,0)
sh2=memblock dword(2,4)
`store image positions
x1=sprite x(sp1)-sprite offset x(sp1)
y1=sprite y(sp1)-sprite offset y(sp1)
x2=sprite x(sp2)-sprite offset x(sp2)
y2=sprite y(sp2)-sprite offset y(sp2)
`calculate collision rectangle
rx1=getmax(x1,x2)
ry1=getmax(y1,y2)
rx2=getmin(x1+sw1-1,x2+sw2-1)
ry2=getmin(y1+sh1-1,y2+sh2-1)
`calculate area of first sprite that has overlapped second
sx1=rx1-x1
sy1=ry1-y1
ex1=rx2-x1
ey1=ry2-y1
`calculate area of second sprite that has overlapped first
sx2=rx1-x2
sy2=ry1-y2
ex2=rx2-x2
ey2=ry2-y2
`check through both sprites to see if any pixels collide
for row=0 to ey1-sy1
for col=0 to ex1-sx1
` bit1=memblock dword(1,12+((row+sy1)*(sw1*4))+((col+sx1)*4))
` bit2=memblock dword(2,12+((row+sy2)*(sw2*4))+((col+sx2)*4))
bit1=memblock byte(1,12+((row+sy1)*(sw1*4))+((col+sx1)*4)+3)
bit2=memblock byte(2,12+((row+sy2)*(sw2*4))+((col+sx2)*4)+3)
` AND bits together to see if a collision has occured
if bit1&&bit2
`Collision has occured
collision=1
if collision=1
move sprite sp1,2
sync
endif
`Clean up memblocks and return
delete memblock 1
delete memblock 2
exitfunction 1
endif
next col
next row
`no collision clean up memblocks and return
delete memblock 1
delete memblock 2
next x
endfunction 0
function getmax(v1,v2)
`Calculate the larger of 2 numbers
if v1>v2
exitfunction v1
else
exitfunction v2
endif
endfunction v1
function getmin(v1,v2)
`calculate the smaller of 2 numbers
if v1<v2
exitfunction v1
else
exitfunction v2
endif
endfunction v1
_Setup_Terrain:
if Terrain_Value=1
filenameA$="Heroes_House"
endif
File_Name$="Terrains/"+filenameA$
if file exist(File_Name$)
open to read 1,File_Name$
for x=1 to 300
read string 1,TerrainSpots$(x)
next x
close file 1
endif
return
Media Attached if you need it.
EDIT:I would like to know how to fix this error I am having...thanks in advance.
do you love video games a lot ¿¿¿ then comeon down too game zone252 @ http://www.freewebs.com/gamezone252/