Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Caphoras

Frischling

  • »Caphoras« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Kaiserslautern

Beruf: Praktikant

  • Private Nachricht senden

1

01.02.2013, 10:59

Tilemap (!?)

Hey, Ich würd gern wissen ob es nicht eine "einfachere Methode" für das laden von Bildern aus einer Tilemap gibt.
Ich hab nämlich folgende Situation:
Ich mach derzeit ein kleinen 2D weltraum shooter, und die Grafik des Schiffs ist 2 geteilt einmal links wenn Ich nicht beschleunige und rechts wenns beschleunigt.

Im Grunde schaut die Klasse also so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
Class ship():
def __init__(self, pos, vel, angle, image, info):
self.pos = [pos[0],pos[1]]
self.vel = [vel[0],vel[1]]
self.thrust = False
self.angle = angle
self.angle_vel = 0
self.image = image
self.image_center = info.get_center()
self.image_size = info.get_size()
self.radius = info.get_radius()


was mich nun interessiert wäre im grunde genommen ob bzw. wie ich sagen könnt if thrust

C-/C++-Quelltext

1
imagecenter_source[0] += 50
z.B. damit die grafik nicht neu geladen sondern einfach nur die ansicht verschoben wird.
Leider weis ich nicht ob ich schon beim Laden eine Variable für die genaue Herkunft auf der "tilemap" angeben kann und wie das ausschaut:(

2

01.02.2013, 12:48

Was ist aus der guten, alten "Eine Frage pro Thread" Regel geworden? Kann ein Mod das bitte mal fixen?
Lieber dumm fragen, als dumm bleiben!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

01.02.2013, 23:21

@Jonathan: An sich ist es aber ein Problem.

Irgendwie müssen wir schon wissen womit du renderst... Also Engine, DX, OpenGL oder sonst was. Allgemein kann man natürlich einfach die Texturkoordinaten anpassen und die Sache ist gegessen.

Caphoras

Frischling

  • »Caphoras« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Kaiserslautern

Beruf: Praktikant

  • Private Nachricht senden

4

06.02.2013, 13:52

mh also eigentlich nutz ich derzeit nur pydev auf Eclipse und dazu pygame um die ganze sache zum laufen zu bringen.
Das Programm an sich hatte Ich schonmal in einem Onlinekurs geschrieben nur weis Ich eben nicht wie Ich dieses zum laufen bekomm unter pygame.

http://www.codeskulptor.org/#user7-yeSOPpDHqf-14.py
Hier ist der Code eigentlich nix besonderes nur ist die schwierigkeit wie ich die Geschichte mit pygame Handhabe, unter der vom Tutor erstellten simplegui geschichte konnte ich einfach beim Laden des Bildes angeben wo und welchen Teil Ich vom Bild haben möchte wie ihr sehen könnt leider ist das so auf pygame nicht anwendbar.

Daher wärs mir eig. sehr lieb wie ich die Textur Koordinaten in meinem fall anpassen kann da Ich nirgends etwas vergleichbares zu diesem simplegui finde und code wie

C-/C++-Quelltext

1
2
canvas.draw_image(self.image, [self.image_center[0], self.image_center[1]] , self.image_size,
            [150,80], (self.image_size[0]/2,self.image_size[1]/2), self.angle)
funktioniert nicht.

daher versuch Ich erstmal

C-/C++-Quelltext

1
self.screen.blit(self.image,(50,50))
und stelle fest, das es funktioniert nur wird die komplette Bilddatei dar gestellt und meine frage ist gibt eine funktion die es mir ermöglicht ohne zusätzliche klassen für das bild zu erstellen.
Womit Ich Render hab Ich eigentlich keine Ahnung ich muss gestehen das Ich ein anfänger bin und daher diesen Onlinekurs genommen habe. So krass es Klingt lass Ich den code einfach durch eclipse laufen drück oben auf den grünen Run button und dann seh dann was passiert :hmm:

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

06.02.2013, 14:03

Surface.blit Dokumentation
beachte, dass dest und area nicht nur Koordination (Listen mit 2 Werten), sondern auch Rechtecke (Listen mit 4 Werten) sein können

um die Begrifflichkeiten klarzustellen:
Python ist deine Programmiersprache
PyGame ist das Framework für Grafik, Sound und Eingabe
Eclipse ist deine Entwicklungsumgebung
pydev ist ein Plugin für Eclipse, um dieses für die Python-Entwicklung verwenden zu können
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Caphoras

Frischling

  • »Caphoras« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Kaiserslautern

Beruf: Praktikant

  • Private Nachricht senden

6

13.02.2013, 12:46

yay jetzt wirds Richtig schwierig >.<
Folgendes problem:

Ich möchte gern das mein Schiff sich links und Rechtsklick auch entsprechend dreht.
Wenn Ich jetzt aber hinge und sag:

Quellcode

1
2
3
4
def update(self): #update läuft in der hauptschleife 
        # update angle
        self.angle = (self.angle + self.angle_vel) % 360
        self.image = self.rotate(self.image, self.angle)


und Ich möchte mein Bild drehn verändert es leider nicht dieses angezeigt bild sondern das ganz hinterlegt, und ändert sogar die Position hab ich das Gefühl.
Ich hab mir also überlegt das Ich irgendwie hin gehen müsste und sagen so der bereich des bildes B ist in 2 Teile unterteilt (1:Beschleunigtes Schiff;2:Unbeschleunigtes Schiff).
Jedes dieser 2 Bilder(welche auf nur einer Datei sind) hat einen eigenen Drehpunkt und Mittelpunkt (Center)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#########BILDDATEI#########     <-- die Wird Rotiert 
##-----------------------##
##-----------------------##
##-------Bild2-----------##
##---------(+)-----------##   #(+) ist der Drehpunkt des Bild welcher rotiert werden sollte 
##-----------------------##
##-----------------------##
##_______________________##
##-----------------------##
##-----------------------##
##-------Bild1(+)--------##
##-----------------------##
##-----------------------##
##-----------------------##
#########BILDDATEI#########


wie sag Ich das nun am besten ? :dash:
oder gäbs irgendwelche Alternativen ?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

7

13.02.2013, 15:37

Warum setzt du den Winkel nicht einfach entsprechend Bewegungsrichtung?
Und du wirst doch wohl sicherlich einen Rotationspunkt festlegen könne... Wenn nicht, zum Rotationspunkt verschieben, Rotieren, zurückschieben.

8

13.02.2013, 22:46

Das Problem ist wohl, dass das gesamte Bild (sprite sheet) rotiert und die Bibliothek (was immer du da auch benutzt) daraus kein akurates Einzelbild extrahieren kann. Wenn das so ist, bleibt dir imo nichts anderes übrig als die Bilder einzeln zu laden. Dann musst du überlegen wie du die Einzelbider als animation abspielst.

Caphoras

Frischling

  • »Caphoras« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Kaiserslautern

Beruf: Praktikant

  • Private Nachricht senden

9

14.02.2013, 09:37

Ich benutze Pygame, und du liegst vollkommen richtig nur müsste ich sämtliche bilder im grunde (und ich habe mehrere Sprite sheets ) auseinander schnipseln :( . D.h. hab Ich gedacht das es doch die möglichkeiten geben müsste einzelbilder zu extrahieren :O

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

10

14.02.2013, 10:02

Texturkoordinaten ändern. Da gibts bestimmt eine Methode für.

Werbeanzeige