createsprite und #pb_any fehler

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Hier geht die selbe Diskussion weiter :
http://www.purebasic.fr/german/viewtopic.php?t=17097
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Brügge hat geschrieben:hi das macht keinen unterschied (dort schmiert der mir schon ab)
Sicher, wenn Du beim 2.mal wieder #PB_Any verwendest?

Code: Alles auswählen

initsprite()
if openwindow(0,0,0,300,300,"test")
  openwindowedscreen(windowid(0),0,0,300,300,1,0,0)

  sprite = createsprite(#pb_any,64,64)
  debug sprite
  freesprite(sprite)
  sprite = createsprite(#pb_any,100,100)
  closewindow(0)
endif
Hatt vorhin kurz nen Fehler drin, mußt natürlich #PB_Any übergeben anstatt sprite.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Benutzt du feste Werte (0...), wird intern ein Array alloziert. Nimmst du jetzt
einen sehr hohen Wert z.B. einen Pointer mit einem Wert von 457239,
werden 457238*structurgroesse Bytes verbraucht, was glaube ich nicht in
deinem Sinne ist. Deswegen fragt der Debugger da auch nochmal nach.

Viele machen z.B. auch den Fehler und fangen mit 1 an, ein Array faengt
aber bei 0 an.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

er will aber, dass das 2. Sprite die Nummer des ersten hat.

Was aber keinen Sinn macht, denn wenn er dem 1. eine zufälligen NUmmer erteilt welche dann auch das 2. hat, kann er auch gleich dem 2. eine zufällige geben, da es ihm ja eh egal ist, welche nummer es hat, und vom ersten den Speicher frei geben.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

@danilo

hi das kann ich nicht machen.... dann bekomm ich unendlich viele sprites...

@edel

das hab ich jetzt nicht verstanden...


@all

ich glaube ich mach das so: ich nehme einen festen wert (z.B. 22000) und zähle dort pro sprite3d 1 hoch. da 22000 kleiner als 1000000 ist, wird der mir doch keinen fehler mehr ausgeben oder?
Abgeschlossene games: No Name Game (NNG) Download-Link:
http://web56.login-1.loginserver.ch/eas ... 2125104111
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Ok, mal mit einfachen Worten, wenn du als Wert 22000 nimmst, hast du
auch 22000 Sprites erstellt.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Brügge hat geschrieben:@danilo

hi das kann ich nicht machen.... dann bekomm ich unendlich viele sprites...
Das Alte wurde doch vorher freigegeben?
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

edel meint damit das es dann ein Array erstellt wurde (welches die SpeicherIDs der Sprite hat) welche dann 22000 Felder hat.

@Brügge nein nicht unendlich viele, sondern immer nur 1! da er ja alle älteren immer wieder frei gibt (den Speicher)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

ahhh!!! ich habs gecheckt!!!

vielen dank!!!

ihr seid soooo gut!!!!!
Abgeschlossene games: No Name Game (NNG) Download-Link:
http://web56.login-1.loginserver.ch/eas ... 2125104111
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

@Brügge

Ich hatte die gleiche Idee, aber du kommst nicht drum herum,
dir eine Struktur anzulegen.

Du kannst zum Beispiel eine LinkedList() erstellen und dort

Dann pro Element Speichern: Sprite2DID und Sprite3DID

Die beiden IDs lässt du dir zufällig generieren.
Sie bleiben aber durch deine Struktur verknüpft.

Ist speichersparender und du bist flexibler, auch wenn es im ersten Augenblick etwas komplizierter aussieht. :roll:
Kinder an die Macht http://scratch.mit.edu/
Antworten