Bild immer in der mitte.
Übersicht BlitzBasic Beginners-Corner
BrocoBetreff: Bild immer in der mitte. |
Do, Jun 13, 2013 14:40 Antworten mit Zitat |
|
---|---|---|
Hallo,
ich wollte mal wissen wie es geht dass ein Bild immer in der mitte des Bildschirms ist, also dass wenn ich den Spieler habe und ich ihn bewege dass der spieler in der Mitte bleibt. Danke schonmal im vorraus |
||
CO2ehemals "SirMO" |
Do, Jun 13, 2013 15:00 Antworten mit Zitat |
|
---|---|---|
BlitzBasic: [AUSKLAPPEN] DrawImage(SpielerBild, (GraphicsWidth() / 2) - (ImageWidth(SpielerBild) / 2), (GraphicsHeight() / 2) - (ImageHeight(SpielerBild) / 2)) Einfacher geht es natürlich, wenn du das ImageHandle in die Mitte des Spielerbildes setzt, dann reicht BlitzBasic: [AUSKLAPPEN] MidHandle(SpielerBild) Zur Erklärung: -> Oberes Beispiel: DrawImage malt den Spieler, SpielerBild muss natürlich ein geladenes Bild sein... GraphicsWidth() - Gibt die eingestellte "Bildschirmbreite" in Pixeln aus GraphicsHeight() - Das selbe mit der Höhe ImageWidth() - Gibt die Breite des Bildes zurück (Achtung: Nur bei Einzelnen Bildern verwenden (Also nicht einen gesamten Bilder-Strip) ImageHeight() - Gibt die Höhe zurück... -> Unteres Beispiel: MidHandle(SpielerBild) - Setzt die Handle-Position des Bildes in die Mitte des Bildes |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Broco |
Do, Jun 13, 2013 15:07 Antworten mit Zitat |
|
---|---|---|
Ok danke
jetzt mal ganz dumm gefragt, wie kann ich damit eine steuerung machen? |
||
bjh |
Do, Jun 13, 2013 15:49 Antworten mit Zitat |
|
---|---|---|
willst du, dass die spielfigur immer in der bildmitte ist und sich der rest bewegt?
oder willst du was anderes machen? |
||
Kruemelator |
Do, Jun 13, 2013 15:54 Antworten mit Zitat |
|
---|---|---|
Wenn der Spieler auf dem Bildschirm immer die selbe Position haben soll, dann musst du einfach den ganzen Rest verschieben.
Führe zwei neue Variablen ein. z.B.: xverschubx, yverschub Die kommen dann beim Malen vor alles außer dem Spielerbild. BlitzBasic: [AUSKLAPPEN] DrawImage bild,xverschub+bildxposition,yverschub+bildyposition xverschub und yverschub werden dann durch Tasteneingaben des Spielers verändert, als wären sie die Position des Spielers. |
||
Broco |
Do, Jun 13, 2013 15:54 Antworten mit Zitat |
|
---|---|---|
Also ich will dass der spieler nach rechts und links laufen kann und hoch springen kann und dass bild soll sich nur nach rechts und links bewegen. | ||
bjh |
Do, Jun 13, 2013 16:55 Antworten mit Zitat |
|
---|---|---|
also so im 2d stil?
wie schon gesagt, du musst einfach den ganzen hintergrund verschieben. hast du schon einen ansatz und eine konkrete frage? |
||
Broco |
Do, Jun 13, 2013 16:59 Antworten mit Zitat |
|
---|---|---|
Danke
Also meine idee wäre ein Spiel in der art von super mario |
||
bjh |
Do, Jun 13, 2013 17:20 Antworten mit Zitat |
|
---|---|---|
dann würd ich dir vorschlagen, erstmal ein feld zu erstellen:
BlitzBasic: [AUSKLAPPEN] Dim map(spielfeldlänge,spielfeldhöhe) dann speicherst du in dem feld ab, wo was ist, z.b. luft, stein oder was auch immer. einfach eine zahl z.b. für luft die 0 und für stein die 1 verwenden. dann zeichnest du die sichtibaren felder auf den bildschirm. bevor ich hier zu viel schreibe, solltest du mir am besten sagen, was du nicht verstehst oder wie weit du schon bist. am besten wäre ein codeausschnitt falls der schon überhaupt existiert. |
||
Broco |
Do, Jun 13, 2013 19:47 Antworten mit Zitat |
|
---|---|---|
Also das ist bis jetzt mein code:
Code: [AUSKLAPPEN] Graphics 640,600
SetBuffer BackBuffer() ;sprites player = LoadImage("player.png") background= LoadImage("background.png") p_x#=400 p_y#=500 bg_x=0 bg_y=0 ;masks MaskImage player,255,255,255 Repeat Cls If KeyDown(30) Then bg_x=bg_x+1 EndIf If KeyDown(32) Then bg_x=bg_x-1 End If DrawImage background,bg_x,bg_y MidHandle(player) DrawImage(player, (GraphicsWidth() / 2),p_y) Flip Until KeyDown(1) End Mit arrays hab ich mich noch nicht soviel auseinander gesetzt und wüsste nicht was ich machen soll |
||
bjh |
Do, Jun 13, 2013 20:16 Antworten mit Zitat |
|
---|---|---|
das mit dem midhandle musst du nur einmal ausführen. am besten natürlich direkt nach dem laden.
und das mit dem hintergrund würd ich mit einem feld machen. ich programmier dir schnell ein beispiel. |
||
Kruemelator |
Do, Jun 13, 2013 20:19 Antworten mit Zitat |
|
---|---|---|
Grundsätzlich ist es richtig, es fehlt nur noch das du den Spieler hoch und runter bewegst. Die Variablen dafür hast du schon: p_x und p_y
Das machst du genau wie mit dem Hintergrund, nur das du hier in Y Richtung bewegst. Kleine Anmerkungen: - MidHandle(player) brauchst du nur einmal genutzten direkt nach dem laden des Bildes. - Gewöhn dir an sauber zu schreiben, z.B. alles in der Schleife einen Tab weiter rechts und das was in den Ifs steht ncoh einen Tab weiter, das macht den Code für dich WESENDLICH übersichtlicher. - Informiere dich mal über CreateTimer und Waittimer und benutze dann Flip 0. |
||
bjh |
Do, Jun 13, 2013 20:38 Antworten mit Zitat |
|
---|---|---|
BlitzBasic: [AUSKLAPPEN] ;timer und fenster + backbuffer hier hab ich das mit dem timer gleich mal so rein gemacht, wie es sein sollte. ich hab ne map zufällig erstellt. dadurch kannst du dann auch später die kollisionen einfach programmieren. |
||
Broco |
Do, Jun 13, 2013 20:49 Antworten mit Zitat |
|
---|---|---|
Okay super dankeschön, echt ne super community
Eine Frage hätte ich noch und zwar wie ich am besten die Kollisionen mache. |
||
bjh |
Do, Jun 13, 2013 21:12 Antworten mit Zitat |
|
---|---|---|
das ist nicht ganz so einfach.
dafür musst du überprüfen, ob der spieler in einem block drin steckt und ihn dann eventuell verschieben. ich hab kein plan, wie ich dir das genau erklären soll. wie lange programmierst du schon? ich würde dir ein beispiel schreiben, in dem du mit einer figur auf einer zufälligen map herumlaufen kannst, weil, wenn das dein erstes richtiges spiel ist, du das vielleicht nicht so schnell hinbekommen würdest. am besten ist es natürlich auf alles selbst zu kommen, aber bei mir hat ein beispiel immer sehr gut geholfen. |
||
Broco |
Do, Jun 13, 2013 21:18 Antworten mit Zitat |
|
---|---|---|
Also ich hab mir vor ca. einem jahr ein buch über java gekauft java war mir dann aber doch ein bisschen zu schwer, mit blitzbasic programmier ich jetzt seit ungefähr einer Woche, also ist dass mein erstes richtiges Programm. | ||
bjh |
Do, Jun 13, 2013 21:23 Antworten mit Zitat |
|
---|---|---|
ok, dann wünsch ich dir viel spaß und ein gutes gelingen.
und wenn du dir ein beispielprogramm wünschst, dann bekommst du eins, in dem alles ganz klar beschrieben ist. aber das würde ein bisschen dauern. ich denke, dass ichs morgen abend fertig haben kann. aber natürlich nur wenn du willst. |
||
Broco |
Do, Jun 13, 2013 21:26 Antworten mit Zitat |
|
---|---|---|
Also schaden tut es ja sicherlich nicht
Aber wenn dass ein großer aufwand ist, ist das nicht nötig ich krieg dass schon hin Danke nochmal |
||
bjh |
Do, Jun 13, 2013 21:32 Antworten mit Zitat |
|
---|---|---|
ok, auftrag angenommen.
bis morgen |
||
Broco |
Do, Jun 13, 2013 21:34 Antworten mit Zitat |
|
---|---|---|
Ok vielen dank | ||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group