BMP Per Taste Verschieben???

08/07/2010 22:46 | Moep |#31
Jetzt bin ich mal gespannt...
08/08/2010 04:22 WiiZocker#32
Ich frag nur ungern, aber könntet ihr mir nen tipp geben wie ich das mit den Aprallen schaffe?

Sin und Cos sind nicht wirklich meine freunde.Ich weiß nicht Wie und Wo ich die verwenden soll.Sonst habe ich die in etwa verstanden...

Ein kleiner Tipp wäre nicht schlecht /=
08/08/2010 06:02 | Moep |#33
Quote:
Originally Posted by WiiZocker View Post
Ich frag nur ungern, aber könntet ihr mir nen tipp geben wie ich das mit den Aprallen schaffe?

Sin und Cos sind nicht wirklich meine freunde.Ich weiß nicht Wie und Wo ich die verwenden soll.Sonst habe ich die in etwa verstanden...

Ein kleiner Tipp wäre nicht schlecht /=
05:37 hours until first reply... respect, hab auf max 10 Minuten gewettet... ;)
Google mal nach "Vektoralgebra", wenn du das raffst, dann bist du irgendwann auch mal dazu in der lage
Lage mehr als nur simple scripts zu schreiben... because this takes a big part in life ...
08/08/2010 13:09 WiiZocker#34
OMG ihr pumpt mich jz mit mathe voll o.O
Andere lösungen dafür gibt es nicht oder?
Was ist GDI+?
08/08/2010 13:41 Shadow992#35
Quote:
Originally Posted by WiiZocker View Post
OMG ihr pumpt mich jz mit mathe voll o.O
Andere lösungen dafür gibt es nicht oder?
Was ist GDI+?
Spieleprogrammierung ist Mathematik...
Das hättest du dir vielleicht überlegen sollen, als du damit angefangen hast. ;)
GDI+ ist nur eine schönere Variante das zu machen, aber Mathematik brauchst du da genauso (vielleicht sogar ein kleines bisschen mehr).
08/08/2010 14:19 PenGuin :O#36
Abprallen?
Koordinate des Balles abzüglich zusätzlcih dazu den Radius rechnen und vergleichen ob X/Y > Rand Koordinate ist.

WEnn das nicht die Antwort auf eine Frage ist, sorry ich hab nur die letzten 3 Posts gelesen ;)
08/08/2010 19:27 WiiZocker#37
@Shadow992
Das ist mir klar, ich habe ja gefragt ob es eine möglichkeit gibt die weniger Mathekentnisse beansprucht.

@Pinguin96
Sorry aber ich verstehe den Satz nicht ganz ;D

Ich werde GDI+ mal googlen, vllt findet sich ja was ;D
08/08/2010 19:53 HardCore.1337#38
Quote:
Das ist mir klar, ich habe ja gefragt ob es eine möglichkeit gibt die weniger Mathekentnisse beansprucht.
Ganz ehrlich? Nein!
Wenn du einen Abprallwinkel willst (und das braucht man), kommt man an Sin und Cos nicht vorbei. Wenn du es nicht verstehst heißt es Lernen.

GDI+ ist in Anbetracht an die ganze Situation eh noch zu kompliziert für dich. Beschäftige dich erstmal mit dem Abprallwinkel.
08/08/2010 19:56 | Moep |#39
GDI+ ist aber nur ein Grafiksystem, das wird dir nichst bringen. Die Physic Engine musst dir schon selber basteln oder du findest eine udf.

Edit, z.B. die [Only registered and activated users can see links. Click Here To Register...]
08/08/2010 20:35 bladerofdarknes#40
ich versteh nicht was an sin cos tan so schwer sein soll
hypotenuse: gerade gegenüber vom rechtenwinkel
ankathete: weg vom rechtenwinkel zu a (länger als gegenkathete, kürzer als hyp.)
gegenkathete: weg vom rechtenwinkel zu b (kürzeste strecke)

sin: gegenkathede:hypotenuse
cos: ankathede:hypotenuse
tan: gegenkathete:ankathete

das ist grundwissen mein freund und egal welchen aschluss du machst, es ist ein großteil der prüfung!
08/08/2010 21:33 Shadow992#41
Quote:
Originally Posted by bladerofdarknes View Post
ich versteh nicht was an sin cos tan so schwer sein soll
hypotenuse: gerade gegenüber vom rechtenwinkel
ankathete: weg vom rechtenwinkel zu a (länger als gegenkathete, kürzer als hyp.)
gegenkathete: weg vom rechtenwinkel zu b (kürzeste strecke)

sin: gegenkathede:hypotenuse
cos: ankathede:hypotenuse
tan: gegenkathete:ankathete

das ist grundwissen mein freund und egal welchen aschluss du machst, es ist ein großteil der prüfung!
Es ist aber auch erst Stoff der 9. Klasse, also vondaher kann man ihn wenig Vorwürfe machen...
08/08/2010 21:52 | Moep |#42
Vielleicht hat er ja jetzt nen Anreiz die nächsten zwei/ fünf Jahre in Mathematik zu pauken ;)
08/09/2010 12:50 WiiZocker#43
Das mit dem Apprall winkel habe ich jetzt schon fast ;D
08/09/2010 15:18 HardCore.1337#44
zeig mal deinen Code bis jetzt.
08/09/2010 20:44 WiiZocker#45
Hab den Code für dem Abprallen im Inet gefunden, aber ich muss noch hinbekommen das wenn der ball auf die linke seite des Spielers fliegt, auch nach links geneigt wieder abprallt.

Der gegner ist auch noch nicht der Schlechteste.(Musste schlechteste schreiben da er bis jetzt unschlagbar ist :D)

Das sind die 2 sachen die ich noch ändern muss.

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


HotKeySet("{F2}","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

$left = 214
$top = 80
$ballleft = 408
$balltop = 664

$x = Random(1,3)
$y = Random(1,3)

$Time = TimerInit()


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


$Ball = GUICtrlCreatePic("Daten\Ball.bmp", $X_Ball, $Y_Ball, 22, 22, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Spieler = GUICtrlCreatePic("Daten\Spieler.bmp", $X_Spieler, $Y_Spieler, 121, 23, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Gegner = GUICtrlCreatePic("Daten\Gegner.bmp", $X_Gegner, $Y_Gegner, 121, 23, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Spielfeld = GUICtrlCreatePic("Daten\Spielfeld.bmp", $X_SF, $Y_SF, 435, 637, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_DISABLE))

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

$Abprallen = GUICtrlSetPos($ball, $X_Ball + $x, $Y_Ball + $y)

MsgBox(0,"Spielstart","Mit einem Klick auf OK startet das Spiel.")
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		EndSwitch
    Start()
    sleep(20)
	Gegner()
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 GegnerSteuern()
	
	If $X_Gegner > 15 Or $X_Gegner < 295 Then ;Hier sollte er nicht durch die Mauer gehen. Wie kann ich das Ändern?
    
	
	$X_Gegner = $X_Ball


	        $X_Gegner = $X_Gegner - 7
        GUICtrlSetPos($Gegner,$X_Gegner,$Y_Gegner)
   EndIf
EndFunc





Func BallBewegen()
    if $down=1 Then
        $Y_Ball = $Y_Ball + 12
    else
        $Y_Ball = $Y_Ball - 12
		
    EndIf
    If  $Y_Ball >= $Verloren Then
        MsgBox(0,"Verloren","Du hast Verloren")
        Exit
    EndIf
 
    if $X_Ball < 19 Then $x  = $x * -1
	if $X_Ball > 416 - 12 Then $x = $x * -1
	if $Y_Ball < 19 then $y = $y * -1
	if $Y_Ball > 757 - 24 Then $y = $y * -1
	$X_Ball = $X_Ball + $x
	$Y_Ball = $Y_Ball + $y

	

	$BallPosition = GUICtrlSetPos($Ball,$X_Ball,$Y_Ball)



;Eine Abprall funktion für die Linke und rechte seite des Spielers/Gegners
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()
	    BallBewegen()
	
    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
	
	
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
MsgBox(0,"Spielstart","Mit einem Klick auf OK startet das Spiel.")
EndFunc


Func ENDE()
    Exit
EndFunc

Func Aktuell()
GUICtrlSetPos($Gegner,$X_Gegner,$Y_Gegner)
EndFunc  


Func Gegner()
	
GegnerSteuern()

EndFunc
Und wie ändere ich das, dass der gegner nicht durch die Wand geht?

MfG Jan