LoadanimImage kombinieren mit...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

ZAiMoN

Betreff: LoadanimImage kombinieren mit...

BeitragDi, Mai 10, 2005 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebe freunde ich war lange nicht mehr hier. Habe meine alten projekte leider alle verloren gehabt da meine Festplatte falsch formatiert wurde. Deswegen melde ich mich erst nach ca 6 monaten mit neuer Motivation und alten ideen zurück.

Ich habe schon ne Nacht drüber geschlafen aber mir ist immer noch nichts eingefallen. Ich habe folgendes Problem:
Der Charakter dreht sich zum cursor ähnlich wie bei CS2D.
Er kann auch gehen, war kein problem aber beim gehen fehlt die lauf Animation.

Code: [AUSKLAPPEN]

drehung = (ATan2(my-y,mx-x)+270) Mod 360
If drehung>357 Then drehung=357
chartemp=CopyImage(char)
rotateimage chartemp, drehung
DrawImage chartemp,ppx-scrollx+16,ppy-scrolly+16


Mein problem liegt bei Copyimage. Dieser befehl kopiert nur den ersten frame und nicht alle. Habt ihr vielleicht ne idee wie ich das mache? Würde halt auch die füsse so ähnlich wie bei CS2D machen.
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
 

hitokiri

BeitragDi, Mai 10, 2005 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
schau dir mal imagebuffer und createimage mit framenumber an.

Weiss die syntax jetzt nich ganz auswendig aber...

createimage charrotate (breite,höhe,frames)
setbuffer imagebuffer(char,0)
grabimage chrarrotate,0,0,0

dann halt mit ner for next schleife ablaufen lassen
 

ZAiMoN

BeitragDi, Mai 10, 2005 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
kannsts bisschen ausführlicher erklären? hab nun 4 stunden probiert ...
vielleicht habt ihr auch nur mein problem nicht verstanden.

Ich habe ein bild aus 3 frames von 0-2.
Zurzeit wird nur frame 0 benutzt. Es sollen aber auch frame 1 und 2 benutzt + zur maus gedreht werden wenn er sich bewegt. (move=1)
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
 

BlackJack

BeitragDi, Mai 17, 2005 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso machst du's dir eigentlich so schwer?
Nimm doch einfach ein Dim-Feld oder Types.
*Team: StuffMakers by Basic_Progger*
I know what I mean.

Chester

BeitragDi, Mai 17, 2005 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Der folgende Code ist zwar schöner als unschön Wink aber für meine damaligen Prograsmmierkentnisse war er weltklasse Wink und das Problem müsste dann gelöst sein.
BlitzBasic: [AUSKLAPPEN]

Include \"Const.bb\"

Graphics 640, 480, 16, 1

Loading = LoadImage(\"GFX/Loading.bmp\")
MaskImage Loading, 255, 0, 255
DrawImage Loading, 280, 210

Dim player(119,3)
Dim player1(119,3)
Dim map1(100, 100)
Global bGround = LoadImage(\"GFX/Menu/BackGround.bmp\")
Global mouse = LoadImage(\"GFX/MENU/mouse.bmp\")
Global NewGame0 = LoadImage(\"GFX/MENU/NewGame0.bmp\")
Global Newgame1 = LoadImage(\"GFX/MENU/Newgame1.bmp\")
Global Exit0 = LoadImage(\"GFX/MENU/Exit0.bmp\")
Global Exit1 = LoadImage(\"GFX/MENU/Exit1.bmp\")
Global map = LoadImage(\"GFX/MAPS/MAP1/map.bmp\")
Global gegner = LoadImage(\"GFX\test_gegner.bmp\")


player(0,0)=LoadAnimImage(\"GFX/player.bmp\", 44, 32, 0, 3)
player1(0,0)=LoadAnimImage(\"GFX/player1.bmp\", 50, 68, 0, 3)

MaskImage exit0, 255, 0, 255
MaskImage Exit1, 255, 0, 255
MaskImage NewGame0, 255, 0, 255
MaskImage NewGame1, 255, 0, 255
MaskImage map, 255, 0, 255
MaskImage mouse, 255, 0, 255
MaskImage player(0,0), 255, 0, 255
MaskImage player1(0,0),255, 0, 255

Type spieler
Field Player_mode
Field Player_state
Field Drehung
Field speed
Field Min_Speed
Field Max_Speed
Field Health
Field Max_Damage
Field Min_Damage
Field player_weapon
End Type
Type gegner
Field x_pos
Field y_pos
Field picture
Field drehung
Field speed
Field health
Field Min_Damage
Field Max_damage
End Type

Global spieler.spieler= New spieler


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SetBuffer BackBuffer()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Menue
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MoveMouse 310, 210
exit_test0 = 0
new_test0 = 0
While Not KeyHit(1)

x_kor = MouseX()
y_kor = MouseY()
t1$ = \"X:\"
t2$ = \" Y:\"
t3$ = t1$ + x_kor
t4$ = t2$ + y_kor
t5$ = t3$ + t4$

exit_test = ImagesOverlap(mouse, x_kor, y_kor,Exit0, 240, 250)
exit_test2 = GetMouse()
new_test = ImagesOverlap(mouse, x_kor, y_kor, NewGame0, 240, 160)
new_test2 = GetMouse()
Cls

TileBlock bground, 640, 480

Text 20, 20, t5$
If exit_test = 0 Then Exit_test0 = 0
If exit_test = 1 Then Exit_test0 = 1
If Exit_test0 = 0 Then DrawImage Exit0, 240, 250
If exit_test0 = 1 Then DrawImage exit1, 240, 250
If Exit_test = 1 Then
If exit_test2 = 1 Then shutdown()
EndIf

If new_test = 0 Then new_test0 = 0
If new_test = 1 Then new_test0 = 1
If new_test0 = 0 Then DrawImage NewGame0, 240, 160
If new_test0 = 1 Then DrawImage NewGame1, 240, 160
If new_test = 1 Then
If exit_test2 = 1 Then game()
EndIf
DrawImage mouse, x_kor, y_kor
Flip
Wend
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Function game()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

spieler\speed = medium_speed
spieler\Max_speed = 100
spieler\Health = 100
;;;
MoveMouse 310, 210
;;;
fps=CreateTimer(60) ; Frames pro Sekunde
;;;;;;;;;;;;;;;;;;;;;;;;;;;;Map definieren
For x1 = 0 To 50
For y1 = 0 To 50
map1(x1, y1) = 1
Next
Next
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Player in Richtung Maus drehen
HandleImage player(0,0), 20, 9
HandleImage player1(0,0), 26, 14

;;;
TFormFilter 0
;;;
For w = 1 To 119
player(w,0)=CopyImage(player(0,0))
RotateImage(player(w,0),w*3)
Next

For w1= 1 To 119
player1(w1,0)=CopyImage(player1(0, 0))
RotateImage(player1(w1,0),w1*3)
Next
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


While Not KeyHit(1) ; Hauptschleife

;;
x_kor = MouseX(); Maus X Koordinate definieren
y_kor = MouseY(); Maus Y Koordinate definieren
;;;;X=X_Korrdinate, Y=Y_Koordinate in einer Variable speichern, zum ausgeben
t1$ = \"X:\"
t2$ = \" Y:\"
t3$ = t1$ + x_kor
t4$ = t2$ + y_kor
t5$ = t3$ + t4$
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
spieler\drehung=(ATan2(y_kor-scrolly,x_kor-scrollx)+270) Mod 360 ; Winkel für Player Drehung berechnen
If spieler\drehung>357 Then spieler\drehung=357
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Cls ; Bildschirm Drehen
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Map laden und ausgeben
For x = 0 To 50
For y = 0 To 50
If map1(x,y) = 1 Then DrawImage map, x*100+viewx, y*100+viewy
Next
Next

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; a, w, s, d, Steuerung
If KeyDown(17) Then ;w
viewy = viewy + spieler\speed
If MilliSecs() > t_player + 100 Then
t_player=MilliSecs()
f_player=(f_player + 1) Mod 3
EndIf
EndIf
If KeyDown(31)Then ;s
viewy = viewy - spieler\speed
If MilliSecs() > t_player + 100 Then
t_player=MilliSecs()
f_player=(f_player + 1) Mod 3
EndIf
EndIf

If KeyDown(30)Then;a
viewx = viewx + spieler\speed
If MilliSecs() > t_player + 100 Then
t_player=MilliSecs()
f_player=(f_player + 1) Mod 3
EndIf
EndIf

If KeyDown(32)Then;d
viewx = viewx - spieler\speed
If MilliSecs() > t_player + 100 Then
t_player=MilliSecs()
f_player=(f_player + 1) Mod 3
EndIf
EndIf


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Sprinten, gehen
If KeyHit(2) Then spieler\speed = norm_speed
If KeyHit(3) Then spieler\speed = medium_speed
If KeyHit(4) Then spieler\speed = high_speed

If Spieler\speed = high_speed Then spieler\max_speed = spieler\max_speed - 1
If spieler\max_speed = 0 Then spieler\speed = medium_speed
If spieler\speed = norm_speed Or spieler\speed = medium_speed And spieler\max_speed <> 100 Then spieler\max_speed = spieler\max_speed +1

ausdauer$= \"Ausdauer: \" + spieler\max_speed
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Health
health$ = \"Health: \" + spieler\health
Text 20, 460, health$
Text 500,460, ausdauer$

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

If KeyHit(18) Then spieler\player_mode = Spieler\player_mode +1
If Spieler\player_mode = 2 Then Spieler\player_mode = 0
If spieler\player_mode = 0 Then
DrawImage player(spieler\drehung/3,0), scrollx, scrolly, f_player ; Spieler malen
EndIf

If spieler\player_mode = 1 Then
DrawImage player1(spieler\drehung/3,0), scrollx, scrolly, f_player ; Spieler malen
EndIf

Text 20, 20, t5$ ; X und Y der Maus ausgeben

DrawImage mouse, x_kor, y_kor; Maus ausgeben


Flip
Wend
End Function

Function shutdown()
FreeImage bGround
FreeImage mouse
FreeImage NewGame0
FreeImage Newgame1
FreeImage map
FreeImage Exit0
FreeImage Exit1
FreeImage player(0,0)
FreeImage player1(0,0)
FreeImage Loading
End
End Function


Blöde Frage: Fragen? Laughing

Alfadur

BeitragDi, Mai 17, 2005 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
also nochmal für alle : wenn du ein animimage rotierst, werden alle frames rotiert. du mußt also nur noch bei drawimage den richtigen frame angeben ...
A Cray is the only computer that runs an endless loop in less than four hours.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group