Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > Sonstige Programmiersprachen

Sonstige Programmiersprachen Das Sammel-Forum für alle weiteren Programmiersprachen wie z.B. Assembler, Delphi, Pascal, C# (C-Sharp), Java usw.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26903, Antworten: 4218
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3325, Antworten: 122
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 309, Antworten: 19
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7641, Antworten: 185
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 19, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 21, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 56, Antworten: 6
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 145, Antworten: 9
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 70, Antworten: 4
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50942, Antworten: 1395
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12.12.2009, 18:23   #1 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard [AutoIt] Raumschiff Spiel mit ProSpeed erstellen

Hi,

ich möchte mir der ProSpeed.dll in AutoIt ein Spiel erstellen

Hier ist mein Anfang

Zitat:
#include <prospeed30.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

$dll = DllOpen("user32.dll")

HotKeySet("{Esc}","_Exit")

$Raumschiff = LoadFileImage(@ScriptDir&"\raumschiff.png")
$RaumschiffWidth = GetWidthImage($Raumschiff)
$RaumschiffHeight = GetHeightImage($Raumschiff)

$WindowWidth = 800
$WindowHeight = 600
$RaumschiffPosX = ($WindowWidth/2)-($RaumschiffWidth/2)
$RaumschiffPosY = $WindowHeight-$RaumschiffHeight

$SpaceGUI = GUICreate("Spaceshooter",$WindowWidth,$WindowHeight)
GUISetState()

$hDC = GetHDC()

$createbitmap = CreateImage($WindowWidth,$WindowHeight) ;create empty bitmap (default = black)
PaintImage($hDC,0,0,$WindowWidth,$WindowHeight,$createbitmap,0,0,0) ;copy empty bitmap to window
;~ CreateBuffer($WindowWidth,$WindowHeight) ;create buffer 800x600 for WM_PAINT
;~ SetBuffer($createbitmap) ;fill buffer with empty bitmap
; Brauch ich das??

AdlibEnable("_Zyklus",20)

Func _Zyklus()
_Update()
_Malen()
EndFunc

While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
_Exit()
EndSwitch
WEnd

Func _Exit()
;// resourcen vorher freigeben
FreeImage($Raumschiff)
DllClose($dll)
Exit
EndFunc

Func _Update()
If _IsPressed(25,$dll) And WinActive($SpaceGUI) Then $RaumschiffPosX += -5

EndFunc

Func _Malen()
Stars(0,0,$WindowWidth,$WindowHeight,200,64,0)
PaintImage($hDC,$RaumschiffPosX,$RaumschiffPosY,$RaumschiffWidth,$RaumschiffHeig ht,$Raumschiff,0,0,-1)
EndFunc
Soll ein Spaceshooter werden, hab früher mit GDI+ bisschen gearbeitet. Weis jetzt nicht genau wie ich alles wieder übermale, oder man das anders macht. Ist der Anfang auch so gut?

Hab noch keine Erfahrung mit ProSpeed, aber scheint richtig gut zu sein und für AutoIt gibt es auch kaum so sachen.

Gruss Greek

Greek ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 12.12.2009, 18:59   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Hallo Greek,

ich hab leider kaum Erfahrung mit AutoIt. Aber ich frag mal den Jan, ob er hier reinsieht. Der hat die Includes und bekannten Demos für AutoIt zur ProSpeed geschrieben. Ich werd' ihn mal anskypen.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 12.12.2009, 20:22   #3 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Lächeln

hi

You need CreateBuffer() and SetBuffer() in your game
When your window was overlapped by another window or
your window gets out of the systray, then your window needs to update.
windows sends a WM_PAINT message
you catch that message in your game and use the buffers to repaint your window background.

i could not test your code yet, because i don't have autoit installed due to a broken mainbord.

hope that i could help you

jan
  Mit Zitat antworten
Alt 12.12.2009, 20:30   #4 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

there is allso a german autoit forum
Portal - .: autoit.de :. - Das deutsche AutoIt-Forum

Kind Regards

jan
  Mit Zitat antworten
Alt 12.12.2009, 20:43   #5 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard

hi

i know how to use autoit, but i don't understand how to delet the spaceship and stars with prospeed.

in gdi+ i make this:
GDIPlus_GraphicsClear($hgraphic)

But don't know what to use in prospeed. I can use _WinApi_RedrawWindow but this is flickering. Need buffer, don't know how to do this with prospeed.

Hope you can help me, don't understand your examples :S
Thanks Greek
Greek ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 13.12.2009, 20:05   #6 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

some simple example

Code:
#include <prospeed30.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

$dll = DllOpen("user32.dll")

HotKeySet("{Esc}","_Exit")

$Raumschiff = LoadSprite("fly.bmp")
$RaumschiffWidth = GetWidthImage($Raumschiff)
$RaumschiffHeight = GetHeightImage($Raumschiff)

$WindowWidth = 800
$WindowHeight = 600
$RaumschiffPosX = ($WindowWidth/2)-($RaumschiffWidth/2)
$RaumschiffPosY = $WindowHeight-$RaumschiffHeight

$SpaceGUI = GUICreate("Spaceshooter",$WindowWidth,$WindowHeight)
GUISetState()

$hDC = GetHDC()

$createbitmap = CreateImage($WindowWidth,$WindowHeight) ;create empty bitmap (default = black)
CreateBuffer($WindowWidth,$WindowHeight) ;create buffer 800x600 for WM_PAINT
SetBuffer($createbitmap) ;fill buffer with empty bitmap
PaintImage($hDC,0,0,$WindowWidth,$WindowHeight,$createbitmap,0,0,0) ;copy empty bitmap to window

; Brauch ich das??

Stars(0,0,$WindowWidth,$WindowHeight,200,64,0)

;Sprite($Raumschiff, $S_offsetX, $S_offsetY, WIDTH, HEIGHT, FRAMES, START_FRAME, FRAME_SPEED, posX, posY)
$Sprite1 = Sprite($Raumschiff, $hdc, 0, 0, 24, 24, 1, 1, 1, 10, 10)

Sleep(2000)


AdlibEnable("_Zyklus",20)

Func _Zyklus()
_Update()
EndFunc

While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
_Exit()
EndSwitch
WEnd

Func _Exit()
;// resourcen vorher freigeben
DeleteSprite($Sprite1) ; delete the sprite
FreeImage($Raumschiff) ; cleanup bitmap recources
NoStars(3)             ; stop the stars , option 3 = let the stars fade out
Exit
EndFunc

Func _Update()
If _IsPressed(25,$dll) And WinActive($SpaceGUI) Then $RaumschiffPosX += -5
; use Movesprite to move the sprite on screen
; Movesprite($S_Alias, $S_posx, $S_posy)
EndFunc

Geändert von Frabbing (13.12.2009 um 21:24 Uhr)
  Mit Zitat antworten
Alt 13.12.2009, 20:40   #7 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard

hi,

thank you very much, now i can go on
Greek ist offline   Mit Zitat antworten
Alt 13.12.2009, 20:56   #8 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard

$Raumschiff = LoadSprite("raumschiff.png")
$Sprite1 = Sprite($Raumschiff, $hdc, 0, 0, $RaumschiffWidth, $RaumschiffHeight, 1, 1, 1, 10, 10)

I can't find those commands in the help? Where did you find them?

And i get an error when i press ESC:

"Die Anweisung in 0x01973d94 verweist auf Speicher in 0x01973d94. Der Vorgang 'read' konnte nicht auf dem Speicher durchgeführt werden."

Can't translate this into english, maybe it's because i use a png and you did use bmp?

Don't find information for these commands
Greek ist offline   Mit Zitat antworten
Alt 13.12.2009, 22:26   #9 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Greek Beitrag anzeigen
$Raumschiff = LoadSprite("raumschiff.png")
$Sprite1 = Sprite($Raumschiff, $hdc, 0, 0, $RaumschiffWidth, $RaumschiffHeight, 1, 1, 1, 10, 10)

I can't find those commands in the help? Where did you find them?

And i get an error when i press ESC:

"Die Anweisung in 0x01973d94 verweist auf Speicher in 0x01973d94. Der Vorgang 'read' konnte nicht auf dem Speicher durchgeführt werden."

Can't translate this into english, maybe it's because i use a png and you did use bmp?

Don't find information for these commands
most functions have the same name as the in the helpfile from frank abbing
and you can peek in the prospeed30.au3 for the functions you need

it does not matter if you are using a bmp or png
i don't know about alpha channel png's
try converting the png to a bmp or jpg and see if you get *** error's

Kind Regards
jan
  Mit Zitat antworten
Alt 13.12.2009, 22:29   #10 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard

Still got that error when i press ESC
Greek ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 14.12.2009, 01:17   #11 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Greek Beitrag anzeigen
Still got that error when i press ESC
Try DestroyBuffer()
in the Exit function, no para's needed
  Mit Zitat antworten
Alt 19.12.2009, 13:53   #12 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard

Hi,

sry that i'm writing back so late, i was in the hospital.

I don't got the error anymore, don't know why.

I had some time in the hospital to go on:

Zitat:
#include <prospeed30.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#Include <Array.au3>

Opt("MouseCoordMode",0)

$dll = DllOpen("user32.dll")

Global $mode = True
Global $AstroidsOff = False
Global $PlayerIsAlive = True

HotKeySet("{Esc}","_Exit")
HotKeySet("{PAUSE}","_Pause")

Global $Schuss[1]
Global $Astroiden[1]

$Raumschiff = LoadSprite("raumschiff.png")
$Standartschuss = LoadSprite("StandartSchuss.jpg")
$Astroid = LoadSprite("Astroid.jpg")

$StandartschussWidth = GetWidthImage($Standartschuss)
$StandartschussHeight = GetHeightImage($Standartschuss)
$RaumschiffWidth = GetWidthImage($Raumschiff)
$RaumschiffHeight = GetHeightImage($Raumschiff)
$AstroidWidth = GetWidthImage($Astroid)
$AstroidHeight = GetHeightImage($Astroid)

$WindowWidth = 600
$WindowHeight = 450
$RaumschiffPosX = ($WindowWidth/2)-($RaumschiffWidth/2)
$RaumschiffPosY = $WindowHeight-$RaumschiffHeight
$SpaceGUIX = (@DesktopWidth/2)-($WindowWidth/2)
$SpaceGUIY = (@DesktopHeight/2)-($WindowHeight/2)

$Feuersequence = 300 ; Je kleiner, desto schneller
$RaumschiffSpeed = 6

InitPixelEffects()

$SpaceGUI = GUICreate("Spaceshooter",$WindowWidth,$WindowHeight,$SpaceGUIX)
GUISetState()

$hDC = GetHDC()

$createbitmap = CreateImage($WindowWidth,$WindowHeight) ;create empty bitmap (default = black)
CreateBuffer($WindowWidth,$WindowHeight) ;create buffer 800x600 for WM_PAINT
SetBuffer($createbitmap) ;fill buffer with empty bitmap
PaintImage($hDC,0,0,$WindowWidth,$WindowHeight,$createbitmap,0,0,0) ;copy empty bitmap to window

Stars(0,0,$WindowWidth,$WindowHeight,200,64,0)

;Sprite($Raumschiff, $S_offsetX, $S_offsetY, WIDTH, HEIGHT, FRAMES, START_FRAME, FRAME_SPEED, posX, posY)
$SpriteRaumschiff = Sprite($Raumschiff, $hdc, 0, 0, $RaumschiffWidth, $RaumschiffHeight, 1, 1, 1, $RaumschiffPosX, $RaumschiffPosY)
MouseMove($RaumschiffPosX+$RaumschiffWidth/2,$RaumschiffPosY+$RaumschiffHeight,0)
Sleep(500)

SetSpriteSpeed($SpriteRaumschiff, $RaumschiffSpeed, $RaumschiffSpeed)

GUIRegisterMsg($WM_MOUSEMOVE,"_MY_WM_MOUSEMOVE")

SetMouseRect($SpaceGUIX, $SpaceGUIY, $SpaceGUIX+$WindowWidth, $SpaceGUIY+$WindowHeight)

$Feuerbegrenzung = TimerInit()
$AstroidenTimer = TimerInit()

While 1
_Feuern()
_Astriodfeld(500)
_Collision()

Sleep( 20 )
WEnd

Func _Exit()
;// resourcen vorher freigeben
DeInitPixelEffects()
DeleteAllSprites()
FreeImage($Raumschiff) ; cleanup bitmap recources
FreeImage($Standartschuss) ; cleanup bitmap recources
FreeImage($Astroid) ; cleanup bitmap recources
NoStars(3) ; stop the stars , option 3 = let the stars fade out
Exit
EndFunc

Func _MY_WM_MOUSEMOVE()
Local $pos = MouseGetPos()
$RaumschiffPosX = $pos[0]-$RaumschiffWidth/2
$RaumschiffPosY = $pos[1]-$RaumschiffHeight
Movesprite($SpriteRaumschiff,$RaumschiffPosX,$RaumschiffPosY)
EndFunc

Func _Schuss()
Return Sprite($Standartschuss, $hdc, 0, 0, $StandartschussWidth+1, $StandartschussHeight, 1, 1, 1, GetSpriteX($SpriteRaumschiff)+$RaumschiffWidth/2-2, GetSpriteY($SpriteRaumschiff)-$RaumschiffHeight/2) ; Mindestens 5 Pixel Breit!
EndFunc

Func _Astroid()
Return Sprite($Astroid,$hdc,0,0,$AstroidWidth,$AstroidHeight,1,1,1,Random(0,$WindowWidt h-$AstroidWidth,1),0)
EndFunc

Func _Feuern()
If MouseButton() = 1 And TimerDiff($Feuerbegrenzung)>=$Feuersequence And $PlayerIsAlive Then
$Feuerbegrenzung = TimerInit()
$SchussIndex = _ArrayAdd($Schuss, _Schuss())
SetSpriteSpeed($Schuss[$SchussIndex],5,5)
Movesprite($Schuss[$SchussIndex],GetSpriteX($Schuss[$SchussIndex]),0-$StandartschussHeight)
EndIf
EndFunc

Func _Astriodfeld($ms)
If TimerDiff($AstroidenTimer)>=$ms And Not $AstroidsOff Then
$AstroidenIndex = _ArrayAdd($Astroiden,_Astroid())
SetSpriteSpeed($Astroiden[$AstroidenIndex],3,3)
Movesprite($Astroiden[$AstroidenIndex],GetSpriteX($Astroiden[$AstroidenIndex]),$WindowHeight)
$AstroidenTimer = TimerInit()
EndIf
EndFunc

Func _Collision()
For $i=UBound($Schuss)-1 To 1 Step -1
$Getrofen = CollideAll($Schuss[$i])
If $Getrofen And $Getrofen<>$SpriteRaumschiff Then
$ColliKordinatenX = GetSpriteX($Getrofen)
$ColliKordinatenY = GetSpriteY($Getrofen)
SetSpritePos($Schuss[$i],0,-20,-20,-20) ;Rausdamit
SetSpritePos($Getrofen,900,900,900,900) ;Rausdamit
SetPixelEffect($ColliKordinatenX+$AstroidWidth/2, $ColliKordinatenY+$AstroidHeight/2, 0x0000ff, 7, 16, 2, 100, 1, 50)
EndIf
If GetSpriteY($Schuss[$i])<0 Then
DeleteSprite($Schuss[$i])
_ArrayDelete($Schuss,$i)
EndIf
Next
For $i=UBound($Astroiden)-1 To 1 Step -1
If Collide($Astroiden[$i],$SpriteRaumschiff) Then
$PlayerIsAlive = False
DeleteSprite($SpriteRaumschiff)
SetPixelEffect(GetSpriteX($SpriteRaumschiff)+$RaumschiffWidth/2, GetSpriteY($SpriteRaumschiff)+$RaumschiffHeight/2, 0x00ffff, 7, 10, 2, 500, 2, 100)
Sleep(500)
SetPixelEffect(GetSpriteX($SpriteRaumschiff)+$RaumschiffWidth/2, GetSpriteY($SpriteRaumschiff)+$RaumschiffHeight/2, 0x00ffff, 7, 10, 2, 300, 2, 100)
Sleep(500)
SetPixelEffect(GetSpriteX($SpriteRaumschiff)+$RaumschiffWidth/2, GetSpriteY($SpriteRaumschiff)+$RaumschiffHeight/2, 0x00ffff, 7, 10, 2, 300, 2, 100)
Sleep(500)
SetPixelEffect(GetSpriteX($SpriteRaumschiff)+$RaumschiffWidth/2, GetSpriteY($SpriteRaumschiff)+$RaumschiffHeight/2, 0x00ffff, 7, 10, 2, 500, 2, 100)
Sleep(5000)
_Exit()
EndIf
If GetSpriteY($Astroiden[$i])>=$WindowHeight Then
DeleteSprite($Astroiden[$i])
_ArrayDelete($Astroiden,$i)
EndIf
Next
EndFunc

Func _Pause()
$AstroidsOff = Not $AstroidsOff
$PlayerIsAlive = Not $PlayerIsAlive
StopAllSprites($mode)
$mode = Not $mode
EndFunc

Func StopAllSprites($mode) ; Didn't find that function
$Result = DllCall("ProSpeed.dll","long","StopAllSprites","long",$mode)
EndFunc
Hope it's getting a good game^^

Prospeed is great

Here the Pictures:

Astroid:

Shot:


I think i will have a few questions in the next days, hope you are looking for it.

greeting Greek

Geändert von Greek (19.12.2009 um 13:55 Uhr)
Greek ist offline   Mit Zitat antworten
Alt 22.12.2009, 15:00   #13 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard

Ich hab noch eine frage zu IntSprite bei ProSpeed,

Ich hab ein Bild mit 9 Frames die in 3 Reihen aufgeteilt sind, also 4, 4, 1.

Jetzt kann ich aber nur mit IniSprite die ersten 4 Animieren, weil sie nebeneinander liegen müssen, gibts da ne möglichkeit das die unteren 2 Reihen mit einbezogen werden?
Greek ist offline   Mit Zitat antworten
Alt 22.12.2009, 16:55   #14 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Nein. Die Animationsbilder eines Sprites müssen schon nebeneinander liegen. Da die Bildbreite aber nicht limitiert ist, sollte das doch kein Problem darstellen.
Wenn du kein Malprogramm hast, kannst du deine Grafik mit meinem "Sprite-Rotator" neu arrangieren.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 22.12.2009, 18:06   #15 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 12.12.2009
Beiträge: 21
Standard

Dank dir, hab alle 9 Frames nebeneinander mit GIMP gegrigt, funktioniert
Greek ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > Sonstige Programmiersprachen

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mit autoit Spalten aus Excel auslesen Destroyer Sonstige Programmiersprachen 3 14.12.2009 07:08
Prospeed 3.0 komplett mit Beispiel profanfan Helfer & Tools 15 09.03.2009 22:22
ProSpeed.dll - Version 3.0 Frabbing Dlls, Includes, Units & Prozeduren 1 07.03.2009 22:16
Kann mir jemand ein Java-Spiel erstellen ? 2-d Software - Allgemein 0 15.06.2005 15:02
Spiel erstellen Gast123 Allgemein 8 20.02.2004 04:34



Alle Zeitangaben in WEZ +2. Es ist jetzt 04:56 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2