Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 12:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



BMP Per Taste Verschieben???

Discussion on BMP Per Taste Verschieben??? within the AutoIt forum part of the Coders Den category.

Reply
 
Old 08/06/2010, 13:59   #16
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by Shadow992 View Post
Er kriegt es nicht mal mit einer GUI hin und du kommst mit GDI+ ?
Schöner wäre es, da hast du recht, aber da wird er sich wohl vorerst die Zähne dran ausbeisen.
Wieso? Ist doch alles logisch aufgebaut bei GDI+


Quote:
Originally Posted by WiiZocker View Post
...Wie schaffe ich es das der Ball von dem Spieler Apprallt?...
Nunja, du müsstes nur die Position des Balles mit der Position der Schlägers vergleichen, Beispiel Pseudocode:

if abs($posBall - $posSchläger) = 0 then abprallen()

Um nun einen realistisches Abprallen zu berechnen, musst du den Einfallswinkel des Balles erfassen. Es gilt dabei Einfallswinkel = Ausfallswinkel.
Tja dann kannst du noch das andrehen des Balles mit einbeziehen, also wenn du den Schläger im Moment des Aufpralles bewegst... aber ich glaub das würde hier jetzt zuweit führen

Im Grunde alles nur eine Spielerei mit Mathematischen Grundkentnissen...
| Moep | is offline  
Old 08/06/2010, 16:00   #17
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by WiiZocker View Post
Ok, es ist schomn gelöst, also das ursprüngliche, aber da ich nicht noch nen Thread posten will, frag ich hier nochmal^^



Hier mal Zittiert was auf der 1sten Seite geschrieben steht.
Das ist einen ganz simple Collisionsfunktion:
PHP Code:
Func Collision($x1,$y1,$width1,$high1,$x2,$y2,$width2,$high2)
    
$hpos1=$y1+$high1
    $wpos1
=$x1+$width1
    $hpos2
=$y2+$high2
    $wpos2
=$x2+$width2
    
if (($hpos1>=$y2 and $y1<$y2) or ($hpos2>=$y1 and $y1>$y2)) Then
        
if (($wpos1>=$x2 and $x1<$x2) or ($wpos2>=$x1 and $x1>$x2)) then
            
return true
        
else
            return 
false
        
endif
    else
        return 
false
    
endif
EndFunc 
Und so kannst du sie verwenden:
PHP Code:
;Neues Fenster öffnet sich:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

HotKeySet("{Left}","SpielerNachLinks")
HotKeySet("{Right}","SpielerNachRechts")

#region Constants
Diese Werte kann man aus dem Bild direkt auslesen
Sagen wir also dein Bild Ball.bmp ist 22 Pixel hoch und 30 breit
Dann musst du auch dementsprechend das machen:
$Width_Ball=30
$High_Ball=22
Const $Width_Spieler=164
Const $Width_Ball=32
Const $Width_Gegner=64

Const $High_Spieler=128
Const $High_Ball=32
Const $High_Gegner=128
#endregion Constants

$X_BallPos 206
$Y_BallPos 
308
$X_Spieler 
160
$Y_Spieler 
592
$X_Gegner 
160
$Y_Gegner 
16

#Region ### START Koda GUI section ### Form=C:\Users\Jan\Desktop\Pong\Daten\Spielfeld GUI.kxf
$PongGui GUICreate("Pong By WiiZocker"436638257164)
$Ball GUICtrlCreatePic("Daten\Ball.bmp"$X_BallPos$Y_BallPos2222BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Spieler GUICtrlCreatePic("Daten\Spieler.bmp"$X_Spieler$Y_Spieler12123BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Gegner GUICtrlCreatePic("Daten\Gegner.bmp"$X_Gegner$Y_Gegner12123BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Spielfeld GUICtrlCreatePic("Daten\Spielfeld.bmp"00435637BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg 
GUIGetMsg()
Switch 
$nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
    if(
Collision($X_BallPos,$Y_BallPos,$Width_Ball,$High_Ball,$X_Spieler,$Y_Spieler,$Width_Spieler,$High_Spieler)) Then
        MsgBox
(0,,"Ball berührt","Ball hat Spieler berührt.")
    EndIf
    if(
Collision($X_BallPos,$Y_BallPos,$Width_Ball,$High_Ball,$X_Gegner,$Y_Gegner,$Width_Gegner,$High_Gegner)) Then
        MsgBox
(0,,"Ball berührt","Ball hat Gegner berührt.")
    EndIf
WEnd

Func SpielerNachLinks
()
$X_Spieler $X_Spieler 7
Aktuell
()
EndFunc

Func SpielerNachRechts
()
$X_Spieler $X_Spieler 7
Aktuell
()
EndFunc

Func Aktuell
()
GUICtrlSetPos($Ball,$X_BallPos,$Y_BallPos)
GUICtrlSetPos($Spieler,$X_Spieler,$Y_Spieler)
GUICtrlSetPos($Gegner,$X_Gegner,$Y_Gegner)
EndFunc


Func Collision
($x1,$y1,$width1,$high1,$x2,$y2,$width2,$high2)
    
$hpos1=$y1+$high1
    $wpos1
=$x1+$width1
    $hpos2
=$y2+$high2
    $wpos2
=$x2+$width2
    
if (($hpos1>=$y2 and $y1<$y2) or ($hpos2>=$y1 and $y1>$y2)) Then
        
if (($wpos1>=$x2 and $x1<$x2) or ($wpos2>=$x1 and $x1>$x2)) then
            
return true
        
else
            return 
false
        
endif
    else
        return 
false
    
endif

EndFunc 
P.S.
Welches Objekt bei der Collisions-Abfrage zuerst kommt ist egal, du kannst also zuerst die Werte vom Ball eintragen und dann die Werte vom Spieler oder andersrum, das spielt keine Rolle.
Shadow992 is offline  
Thanks
1 User
Old 08/06/2010, 21:18   #18
 
elite*gold: 0
Join Date: Jul 2009
Posts: 492
Received Thanks: 126
Danke, aber er erkennt nicht wenn der Spieler berührt wird )=
Beim gegner kommt die MSG
WiiZocker is offline  
Old 08/06/2010, 21:28   #19
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Willst du was lernen oder nen fertiges Script haben?...
| Moep | is offline  
Old 08/06/2010, 22:43   #20
 
elite*gold: 0
Join Date: Jul 2009
Posts: 492
Received Thanks: 126
Ich habe ja dran rumprobiert aber entweder fliegt der ball durchs feld oder bleibt im spieler stecken.

Wollte auch nur wissen ob Shadow vllt nen fehler gemacht hat im skript.Ich erkenne da zwar keinen aber...Wer weiß

Und bis das game fertig ist wird noch zeit vergehen. ;D
WiiZocker is offline  
Old 08/06/2010, 22:51   #21
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by WiiZocker View Post
Ich habe ja dran rumprobiert aber entweder fliegt der ball durchs feld oder bleibt im spieler stecken.

Wollte auch nur wissen ob Shadow vllt nen fehler gemacht hat im skript.Ich erkenne da zwar keinen aber...Wer weiß

Und bis das game fertig ist wird noch zeit vergehen. ;D
Wenn du die Bilder mal mit hochlädst schau ich es mir genauer an.
Ein Fehler bei meiner Funktion gibts sicherlich nicht, aber vielleicht hast du was falsch gemacht.
Wie gesagt komplettes Skript+Bilder.

@| Moep |
Solange es so dumme gibt wie mich, wird er es nicht alleine machen wollen.
Shadow992 is offline  
Old 08/07/2010, 00:02   #22
 
elite*gold: 0
Join Date: Jul 2009
Posts: 492
Received Thanks: 126
Ok, habe meinen Kompletten Pong ordner geuppt.(832 KB groß, Gepackt ca. 311 KB groß)
Damit alles beisammen ist
Attached Files
File Type: rar Pong.rar (31.1 KB, 8 views)
WiiZocker is offline  
Old 08/07/2010, 01:17   #23
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by Shadow992 View Post
@| Moep |
Solange es so dumme gibt wie mich, wird er es nicht alleine machen wollen.
Ich weiß warum du dass machst.. ertapp mich ja selbst manchmal dabei es zu tun...
| Moep | is offline  
Old 08/07/2010, 01:22   #24
 
elite*gold: 0
Join Date: Jul 2009
Posts: 492
Received Thanks: 126
Ich habe gefragt, ihr habt geantwortet.Ist daran irgendwas falsch? ich lerne ja trotzdem dabei und das ist nicht das einziege woran ich arbeite ;D
WiiZocker is offline  
Old 08/07/2010, 10:09   #25
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by WiiZocker View Post
Ich habe gefragt, ihr habt geantwortet.Ist daran irgendwas falsch? ich lerne ja trotzdem dabei und das ist nicht das einziege woran ich arbeite ;D
So, so funktioniert es.
Wo genau der Fehler lag weiß ich nicht, da ich echt jedemenge rausgeschmissen/verändert habe.

PHP Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

HotKeySet("{F1}","Start")
HotKeySet("{F5}","Neustart")
HotKeySet("{esc}","ENDE")

HotKeySet("{Left}","SpielerNachLinks")
HotKeySet("{Right}","SpielerNachRechts")


#region Constants
Diese Werte kann man aus dem Bild direkt auslesen
Sagen wir also dein Bild Ball.bmp ist 22 Pixel hoch und 30 breit
Dann musst du auch dementsprechend das machen:
$Width_Ball=30
$High_Ball=22
Const $Width_Spieler=121
Const $Width_Ball=22
Const $Width_Gegner=121

Const $High_Spieler=23
Const $High_Ball=22
Const $High_Gegner=23
#endregion Constants

$down=1

$Verloren 
600

$Width 
436
$Height 
638

$X_Ball 
206
$Y_Ball 
308

$X_Spieler 
160
$Y_Spieler 
592

$X_Gegner 
160
$Y_Gegner 
16

$X_SF 
0
$Y_SF 
0



#Region ### START Koda GUI section ### Form=C:\Users\Jan\Desktop\Pong\Daten\Spielfeld GUI.kxf
$PongGui GUICreate("Pong By WiiZocker"$Width$Height257164)


$Ball GUICtrlCreatePic("Daten\Ball.bmp"$X_Ball$Y_Ball2222BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Spieler GUICtrlCreatePic("Daten\Spieler.bmp"$X_Spieler$Y_Spieler12123BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Gegner GUICtrlCreatePic("Daten\Gegner.bmp"$X_Gegner$Y_Gegner12123BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Spielfeld GUICtrlCreatePic("Daten\Spielfeld.bmp"$X_SF$Y_SF435637BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_DISABLE))

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
    EndSwitch
    
Start()
    
sleep(20)
WEnd

Func SpielerNachLinks
()
    If 
$X_Spieler 15 Then
        $X_Spieler 
$X_Spieler 7
        GUICtrlSetPos
($Spieler,$X_Spieler,$Y_Spieler)
    EndIf
EndFunc


Func SpielerNachRechts
()
    If 
$X_Spieler 295 Then
        $X_Spieler 
$X_Spieler 7
        GUICtrlSetPos
($Spieler,$X_Spieler,$Y_Spieler)
    EndIf
EndFunc


Func BallBewegen
()
    if 
$down=1 Then
        $Y_Ball 
$Y_Ball 8
    
else
        
$Y_Ball $Y_Ball 8
    
EndIf
    If  
$Y_Ball >= $Verloren Then
        MsgBox
(0,"Verloren","Du hast Verloren")
        Exit
    EndIf
    
GUICtrlSetPos($Ball,$X_Ball,$Y_Ball)
EndFunc


Func Collision
($x1,$y1,$width1,$high1,$x2,$y2,$width2,$high2)
    
$hpos1=$y1+$high1
    $wpos1
=$x1+$width1
    $hpos2
=$y2+$high2
    $wpos2
=$x2+$width2
    
if (($hpos1>=$y2 and $y1<$y2) or ($hpos2>=$y1 and $y1>$y2)) Then
        
if (($wpos1>=$x2 and $x1<$x2) or ($wpos2>=$x1 and $x1>$x2)) then
            
return true
        
else
            return 
false
        
endif
    else
        return 
false
    
endif

EndFunc


Func Start
()
    if 
Collision($X_Spieler,$Y_Spieler,$Width_Spieler,$High_Spieler,$X_Ball,$Y_Ball,$Width_Ball,$High_Ball)==true Then
        $down
=0
    
EndIf
    if 
Collision($X_Ball,$Y_Ball,$Width_Ball,$High_Ball,$X_Gegner,$Y_Gegner,$Width_Gegner,$High_Gegner)==true Then
        $down
=1
    
EndIf
    
BallBewegen()
EndFunc


Func Neustart
()
$X_Ball 206
$Y_Ball 
308

$X_Spieler 
160
$Y_Spieler 
592

$X_Gegner 
160
$Y_Gegner 
16

$X_SF 
0
$Y_SF 
0
EndFunc


Func ENDE
()
    Exit
EndFunc

Func Aktuell
()
GUICtrlSetPos($Gegner,$X_Gegner,$Y_Gegner)
EndFunc 
Shadow992 is offline  
Thanks
1 User
Old 08/07/2010, 12:37   #26
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Kleiner Tipp noch von mir.
Bau in deinen Script noch ein paar Winkelberechnungen ein, so das der Ball auch mal seinen Kurs ändert. (Sin und Cos werden dir helfen)
HardCore.1337 is offline  
Thanks
1 User
Old 08/07/2010, 15:32   #27
 
elite*gold: 0
Join Date: Jul 2009
Posts: 492
Received Thanks: 126
Danke Shadow, ohne dich wäre ich wohl aufgeschmissen...



Quote:
Kleiner Tipp noch von mir.
Bau in deinen Script noch ein paar Winkelberechnungen ein, so das der Ball auch mal seinen Kurs ändert. (Sin und Cos werden dir helfen)
Das hatte ich auch vor ;D nur wie genau funktioniert Sin und Cos, hab dazu nichts nützliches gefunden.Weder in Google noch hier.

Von der Autoit hilfe fühl ich mich auch ned gerade geholfen.
WiiZocker is offline  
Old 08/07/2010, 22:28   #28
 
elite*gold: 0
Join Date: Jul 2009
Posts: 492
Received Thanks: 126
Push.
Sorry aber musste ich pushen, finde echt kein tut dazu und hatten sinus und cosinus noch nicht in der schule. 9 schuljahr fängt gerade an.
WiiZocker is offline  
Old 08/07/2010, 22:34   #29
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by WiiZocker View Post
Push.
Sorry aber musste ich pushen, finde echt kein tut dazu und hatten sinus und cosinus noch nicht in der schule. 9 schuljahr fängt gerade an.
Eigentlich sind wir ja kein Hausaufgabenforum, aber das zählt ja nicht dazu, also:
Sehr schöne Seite:

Seite bei der du deine Ergebnisse "überprüfen" lassen kannst:
Shadow992 is offline  
Thanks
1 User
Old 08/07/2010, 22:45   #30
 
elite*gold: 0
Join Date: Jul 2009
Posts: 492
Received Thanks: 126
Ich werds mir sofort anschauen danke dir ;D
WiiZocker is offline  
Reply

Tags
autoit, bmp, bmp verschieben, frage, spiel


Similar Threads Similar Threads
target verschieben
04/18/2010 - World of Warcraft - 4 Replies
Hi ich hab mir so ein pack sozusagen downgelodet von rapid frames und nun wollt ich kurz fragen wie man dies hier verschiebt http://img232.imageshack.us/img232/5009/unbenannt di.png hab auch leider keine ahnung welches addon das ist
Angelfertigkeit verschieben?
11/01/2009 - Metin2 Private Server - 1 Replies
Hallo ich spiele auf Metin35 und will einen Angelbot benutzen. Das Problem ist nur das ich die Angelfertigkeit nicht verschieben kann, und bei denn meisten Bot´s muss man die ja auf F4 legen. Denke net das ich zu blöd bin da ich auf DE server und so das schon tausendma gemacht hab^^:D also wie es geht weiß ich schon, aber i.wie is das bei mir fest, also nicht verschiebbar. Kann das an der deutschen exe liegen oder was könnte das für gründe haben? Hoffe mir kann jemand Helfen.:confused:
NPC verschieben
10/04/2009 - Metin2 Private Server - 0 Replies
hallo ich würde gerne wissen wie man npcs verschieben kann ;) also z.b. den schmied auf den dorfplatz setzten oder so^^ suchen kann man ja nich weil bei npc sinds zu wenig buchstaben xD wenns so ein thema schon gibt könnte pls jemand den link posten thx nick
Quartz Bar verschieben
10/10/2007 - World of Warcraft - 9 Replies
So, da ich mein interface überarbeitet hab, will ich von der castbar von Bongos auf die Quartz umsteigen...nur wie kann man die casting bar verschieben und die kleine ausmachen ;/
Verschieben
05/12/2005 - General Gaming Discussion - 4 Replies
Kann man das spiel mal aus dem Upcomming releases raus kopieren in ne andere Kategorie oder ne Eigene erstellen? Das sieht aus als leben wir hinterm Mond.



All times are GMT +1. The time now is 12:13.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.