[GastForen Archiv Adobe Director Problem mit Game

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Archiv - Archivierte Foren
Themen
Beiträge
Moderatoren
Letzter Beitrag

Problem mit Game

infinity
Beiträge gesamt: 28

18. Jun 2006, 12:21
Beitrag # 1 von 16
Bewertung:
(7906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab ein kleines Game programmiert. In diesem Game fliegt von oben ein rotes Kästchen herunter. Dieses Kästchen sollte aber nun ersetzt werden, durch 10 verschiedene Icons im Cast. Diese Icons sollten dann per Zufall von oben nach unten fliegen. Also einmal kommt z.B. ein Laptop, dann ein Schuh, dann eine Tasche usw.

Kann mir jemand sagen, wie ich das hinkriege?

Oder kann mir hier jemand seine E-Mail Adresse geben? Dann würde ich das ganze kurz per E-Mail senden.

Wäre sehr dankbar!
X

Problem mit Game

Batam
Beiträge gesamt: 328

20. Jun 2006, 09:20
Beitrag # 2 von 16
Beitrag ID: #235261
Bewertung:
(7890 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi.

Schau dir mal random an. Das kannst du fast überall einsetzten.

--Startposition zufällig festlegen:
sprite(x).loc = point(random(480), -40) -- bei Bühnenbreite <= 480, außerhalb von oben starten

--Darsteller zufällig auswählen:
myMember = random(10) + 20 -- einer von 10 Member, die im Cast auf Platz 21-30 liegen
sprite(x).member = member(myMember, deinCast)

--usw.

In einer on exitFrame-Prozedur fragst du die Position deines Sprites ständig ab. Wenn das Bild die Bühne verlassen hat, wechselst du den Member, positionierst neu, legst eventuell noch die Geschwindigkeit neu fest.

Das Ganze schreibst du in ein Verhaltensskript und benutzt nur Property-Variablen. Dann kannst du ein Skript für verschiedene Sprites verwenden.

mfg,
Batam


als Antwort auf: [#235005]

Problem mit Game

infinity
Beiträge gesamt: 28

24. Jul 2006, 14:02
Beitrag # 3 von 16
Beitrag ID: #240660
Bewertung:
(7773 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
also ich hab nun ein behaviour-script mit folgendem inhalt:

-----------------------------------------
global gCatched, gMissed, gSpeed

on exitframe

objekt = random(10) + 18
sprite(3).loc = member(objekt)

sprite(3).locV = sprite(3).locV + gSpeed

if sprite(3).intersects(1) then
sprite(3).locV = 0
sprite(3).locH = random (150,450)
gSpeed = gSpeed + 0.5
gCatched = gCatched + 1
member("punkte").text = string(gCatched)
end if

if sprite(3).intersects(8) then
sprite(3).locV = 0
sprite(3).locH = random (150,450)
gMissed = gMissed - 1
member("leben").text = string(gMissed)
end if

if sprite(3).intersects(1) AND sprite(11).visible = 1 then
puppetsound 2, "sound"
end if

if sprite(3).intersects(8) AND sprite(11).visible = 1 then
puppetsound 2, "sound2"
end if

end
-----------------------------------------

ganz oben hab ich nun dein beispiel reingeschrieben. doch es werden mir keine bilder aus dem cast auf der bühne angezeigt. die icons befinden sich im cast auf position 19 - 28. was mache ich falsch?


als Antwort auf: [#235261]

Problem mit Game

Batam
Beiträge gesamt: 328

24. Jul 2006, 17:09
Beitrag # 4 von 16
Beitrag ID: #240734
Bewertung:
(7770 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo.

Zitat sprite(3).loc = member(objekt)


Du kannst einer Position natürlich keinen Member zuweisen. Korrekt muss das lauten:
sprite(3).member = member(objekt) --bei nur einer Besetzung oder
sprite(3).member = member(objekt, deinCast)

Den restlichen Code habe ich mir schon nicht mehr angesehen.
Möglich, dass noch weitere Fehler im Code sind.

mfg,
Batam


als Antwort auf: [#240660]

Problem mit Game

infinity
Beiträge gesamt: 28

2. Aug 2006, 12:31
Beitrag # 5 von 16
Beitrag ID: #242280
Bewertung:
(7733 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
also ich habe jetzt nur noch ein problem :) und zwar bewegen sich die einzelnen icons nicht nach unten. diese sollten ja nach unten fallen... wenn ich nur ein objekt verwenden würde, dann funktioniert es. aber da ich nun per random verschiedene verwende, geht es plötzlich nicht mehr... weiss jemand warum? funktioniert das ganze vielleicht nicht, weil das behaviour-script auf nur einem der runterfallenden objekte liegt? wie kann ich denn das anders lösen?

moviescript:

------------------------
global gCatched, gMissed, gSpeed, gObjekt

on preparemovie

gObjekt = random(10) + 18

sprite(9).visible = 0

sprite(11).visible = 1

gSpeed = 5

sprite(3).locV = -50
sprite(3).locH = random (150,450)
sprite(3).member = member(gObjekt)

member("punkte").text = string("0")

gCatched = 0

member("leben").text = string("5")

gMissed = 5

end
------------------------

behaviour-script auf einem runterfallenden objekt:

------------------------
global gCatched, gMissed, gSpeed, gObjekt

on exitframe

gObjekt = random(10) + 18
sprite(3).member = member(gObjekt)

sprite(3).locV = sprite(3).locV + gSpeed

if sprite(3).intersects(1) then

sprite(3).locV = 0

sprite(3).locH = random (150,450)
sprite(3).member = member(gObjekt)

gSpeed = gSpeed + 0.5

gCatched = gCatched + 1

member("punkte").text = string(gCatched)

end if

if sprite(3).intersects(8) then

sprite(3).locV = 0

sprite(3).locH = random (150,450)
sprite(3).member = member(gObjekt)

gMissed = gMissed - 1

member("leben").text = string(gMissed)

end if

if sprite(3).intersects(1) AND sprite(11).visible = 1 then

puppetsound 2, "sound"

end if

if sprite(3).intersects(8) AND sprite(11).visible = 1 then

puppetsound 2, "sound2"

end if

end
------------------------


als Antwort auf: [#240734]

Problem mit Game

Batam
Beiträge gesamt: 328

2. Aug 2006, 19:44
Beitrag # 6 von 16
Beitrag ID: #242378
Bewertung:
(7722 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hi.

Du wandelst hier einen String in einen String:
member("punkte").text = string("0")
member("leben").text = string("5")
Das ist überflüssig. Du kannst die Zahlen auch direkt als String eingeben.
member("punkte").text = "0"
member("leben").text = "5"


Zitat on exitframe
gObjekt = random(10) + 18
sprite(3).member = member(gObjekt)

Diese Zeilen sorgen dafür, dass du bei jedem Bild den Member tauscht und nicht nur bei Bedarf. Das dein Spiel mit Random bei dir nicht funktioniert liegt wahrscheinlich daran. Allerdings sehe ich nicht wie dein Spiel insgesamt aufgebaut ist. Es könnte also noch ein weiteres Problem geben.


Stell im Verhaltensskript eine beginSprite-Prozedur vor exitFrame und lösch die doppelten Zeilen aus dem Filmskript. "sprite(3)" würde ich überall durch eine Variable ersetzen. Das macht den Code flexibler weil du das Sprite auf einen anderen Kanal verschieben kannst ohne den Code ändern zu müssen.

Code
global gCatched, gMissed, gSpeed, gObjekt, gSprite 

on beginSprite me
gSprite = sprite(me.spritenum)

gObjekt = random(10) + 18
gSprite.locV = -50
gSprite.locH = random (150,450)
gSprite.member = member(gObjekt)
end


Gruss, Batam


als Antwort auf: [#242280]

Problem mit Game

infinity
Beiträge gesamt: 28

3. Aug 2006, 12:59
Beitrag # 7 von 16
Beitrag ID: #242504
Bewertung:
(7713 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo Batam... vielen Dank für deine Hilfe. Ich habe die Scripts mal abgeändert wie du gesagt hast. Doch das Hauptproblem ist nach wie vor nicht gelöst. Die Objekte wollen einfach noch nicht runterfallen.

Also das ganze sollte eigentlich folgendermassen funktionieren. Unten ist ein Objekt, das ich nach links oder rechts bewegen kann. Beginnt das Game, dann fliegt von oben ein per Random ausgesuchtes Item nach unten. Schaffe ich es, das Item mit dem unteren Objekt aufzufangen, dann kommt wieder ein neues Item (wieder per Random ausgesucht) von oben herunter.

Kann ich dir sonst das ganze File mal senden, damit du den Zusammenhang besser verstehst?

Hier nochmals die beiden Scripts:

(moviescript)
----------------------------
global gCatched, gMissed, gSpeed, gObjekt

on preparemovie

gObjekt = random(10) + 18

sprite(9).visible = 0

sprite(11).visible = 1

gSpeed = 5

sprite(3).locV = -50
sprite(3).locH = random (150,450)
sprite(3).member = member(gObjekt)

member("punkte").text = "0"

gCatched = 0

member("leben").text = "5"

gMissed = 5

end
----------------------------

(behaviourscript auf runterfallendem objekt (sprite3))
----------------------------
global gCatched, gMissed, gSpeed, gObjekt, gSprite

on beginSprite me

gSprite = sprite(3)
gObjekt = random(10) + 18
gSprite.locV = -50
gSprite.locH = random (150,450)
gSprite.member = member(gObjekt)

end

on exitframe

gSprite.locV = gSprite.locV + gSpeed

if gSprite.intersects(1) then

gSprite.locV = 0

gSprite.locH = random (150,450)
gSprite.member = member(gObjekt)

gSpeed = gSpeed + 0.5

gCatched = gCatched + 1

member("punkte").text = string(gCatched)

end if

if gSprite.intersects(8) then

gSprite.locV = 0

gSprite.locH = random (150,450)
gSprite.member = member(gObjekt)

gMissed = gMissed - 1

member("leben").text = string(gMissed)

end if

if gSprite.intersects(1) AND sprite(11).visible = 1 then

puppetsound 2, "sound"

end if

if gSprite.intersects(8) AND sprite(11).visible = 1 then

puppetsound 2, "sound2"

end if

end
----------------------------


als Antwort auf: [#242378]

Problem mit Game

Batam
Beiträge gesamt: 328

3. Aug 2006, 20:08
Beitrag # 8 von 16
Beitrag ID: #242648
Bewertung:
(7704 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi.

Du musst gObjekt = random(10) + 18 natürlich immer ausführen wenn du den Member tauschen willst und nicht nur bei beginSprite.

Ich habe deinen Code ein wenig umgeschrieben, so dass es laufen sollte.

Code
-- (moviescript) 
----------------------------
global gCatched, gMissed

on preparemovie

sprite(9).visible = 0
sprite(11).visible = 1

member("punkte").text = "0"
member("leben").text = "5"

gCatched = 0
gMissed = 5

end


-- (behaviourscript auf runterfallendem objekt
----------------------------

global gCatched, gMissed
property pSprite, pSpeed, pObjekt

on beginSprite me
pSprite = sprite(me.spritenum)
pSprite.locV = -50
resetMyMember
pSpeed = 5
end

on resetMyMember
pObjekt = random(10) + 18
pSprite.locH = random (150,450)
pSprite.member = member(pObjekt)
-- put pSprite.member.name && pObjekt -- test
end

on exitframe
pSprite.locV = pSprite.locV + pSpeed

------------------
if pSprite.intersects(1) then
if sprite(11).visible = 1 then puppetsound 2, "sound"

pSprite.locV = 0
resetMyMember

pSpeed = pSpeed + 0.5
gCatched = gCatched + 1
member("punkte").text = string(gCatched)
end if
------------------
if pSprite.intersects(8) then
if sprite(11).visible = 1 then puppetsound 2, "sound2"

pSprite.locV = 0
resetMyMember

gMissed = gMissed - 1
member("leben").text = string(gMissed)
end if
end


mfg, Batam


als Antwort auf: [#242504]

Problem mit Game

infinity
Beiträge gesamt: 28

4. Aug 2006, 13:33
Beitrag # 9 von 16
Beitrag ID: #242829
Bewertung:
(7696 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Batam... jetzt hat es endlich geklappt!!! Herzlichen Dank für deine Hilfe...

Ich hab jetzt noch etwas kleines. Und zwar hab ich das Game in ein anderes Director-Movie kopiert. Das Game funktioniert in diesem neuen File eigentlich soweit, ausser die Punkte und Leben werden nicht richtig angezeigt. Diese Anzeigen verändern sich gar nicht mehr, obwohl im Hintergrund die Leben und Punkte richtig berechnet werden. Einfach die Anzeige stimmt nicht. Es wird z.B. immer 58 Punkte und 0 Leben angezeigt. Egal was passiert.

In diesem neuen Director-File habe ich kein Moviescript mehr. Das muss alles ohne Moviescript laufen. Ich hab nun den Inhalt des Moviescripts in ein behaviour-Script eingefügt (on beginSprite). Aber ist das denn nun das Problem, dass die Punkte und die Leben nicht angezeigt werden???


als Antwort auf: [#242648]

Problem mit Game

Batam
Beiträge gesamt: 328

4. Aug 2006, 18:37
Beitrag # 10 von 16
Beitrag ID: #242908
Bewertung:
(7680 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi.
Das ist nur irgendein kleiner Fehler. Prüfe noch mal alles genau durch.

Zitat sprite(9).visible = 0
sprite(11).visible = 1

Überprüfe ob die Sprites wirklich in diesen Kanälen liegen


Zitat member("punkte").text = "0"
member("leben").text = "5"

Die Member müssen genau so heißen. Die Namen dürfen auch nicht doppelt vorkommen. Director nimmt automatisch den ersten Member der diesen Namen trägt. Wenn die Member nicht mehr im ersten internen Cast liegen schreibst du besser:
member(member,cast).text = "0"
also in deinem Fall z.B.:
member("punkte",2).text = "0"
oder
member("punkte","Texte").text = "0"

Wenn etwas on beginSprite ausgeführt werden soll, dann muss der Abspielkopf auch am Begin des Sprites vorbeikommen. Du darfst also nicht mit einem Sprungbefehl (go to …) daran vorbei springen.

Zitat In diesem neuen Director-File habe ich kein Moviescript mehr. Das muss alles ohne Moviescript laufen.

Wieso? Was spricht dagegen?

Gruss, Batam


als Antwort auf: [#242829]

Problem mit Game

infinity
Beiträge gesamt: 28

4. Aug 2006, 20:41
Beitrag # 11 von 16
Beitrag ID: #242923
Bewertung:
(7676 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich hab nun den kleinen fehler gefunden... die punkteanzeige funktioniert nun wieder... doch wie gesagt, muss das ganze nun ohne movie-script funktionieren. weil ich springe in diesem director-file zwischen den verschiedenen frames hin und her. wenn man nun auf das frame springt, wo sich das game befindet, dann kann man dies so weit ganz normal spielen. ist das game fertig und man geht wieder an einen anderen ort im director-movie und möchte dann das game nochmals spielen, dann bleibt die gleiche punktezahl ersichtlich und gespeichert, wie man beim letzten mal spielen hatte.

die punktezahl soll also auf null gesetzt werden, sobald man das game erneut spielen möchte und nicht wenn man das director-movie neu startet.... mit on beginSprite hat das vorher bei mir nicht geklappt. die daten wurden nicht auf null gesetzt... kannst du mir sagen wie ich das machen muss? wäre sehr dankbar... nachher sollte das ganze endlich fertig sein :P


als Antwort auf: [#242908]

Problem mit Game

Batam
Beiträge gesamt: 328

4. Aug 2006, 21:26
Beitrag # 12 von 16
Beitrag ID: #242931
Bewertung:
(7672 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Schreib den Befehl den Punktestand zurück zu setzen doch einfach in das Script des Buttons, der das Spiel startet. Oder du schreibst eine kleine Funktion im Filmskript, die immer aufgerufen wird wenn zum Spiel gesprungen oder es neu gestartet wird. Wo dieser Befehl genau steht ergibt sich einfach aus der Logik deines Programms.

Also satt:
Code
on preparemovie  

sprite(9).visible = 0
sprite(11).visible = 1

member("punkte").text = "0"
member("leben").text = "5"

gCatched = 0
gMissed = 5

end


Schreibst du
Code
-- im Moviescript 
on preparemovie
resetGame
end


on resetGame
sprite(9).visible = 0
sprite(11).visible = 1

member("punkte").text = "0"
member("leben").text = "5"

gCatched = 0
gMissed = 5
end


-- in den Verhalten z.B.
on mouseDown
resetGame
go to "Game" -- = go to Marker, das ist besser als go to Frame X
end


Gruss, Batam


als Antwort auf: [#242923]

Problem mit Game

infinity
Beiträge gesamt: 28

4. Aug 2006, 21:59
Beitrag # 13 von 16
Beitrag ID: #242942
Bewertung:
(7670 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ok nun läuft alles wie geschmiert =) ... vielen dank nochmals!


als Antwort auf: [#242931]

Problem mit Game

infinity
Beiträge gesamt: 28

4. Aug 2006, 22:43
Beitrag # 14 von 16
Beitrag ID: #242950
Bewertung:
(7669 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich hab nochmals kurz etwas... und zwar betreffend textfelder... wenn ich ein textfeld erstelle, darauf doppelklicke und etwas hineinschreibe, dann sieht der text ganz schön abgerundet (geglättet) aus... aber sobald ich dann aus dem textfeld wegklicke, dann sieht der text nicht mehr schön aus. so wie ein bisschen gekräuselt am rand... woran liegt das? schriftart spielt keine rolle, ist bei allen... und auch nachdem ich ein exe-file erstellt habe, sieht der text immernoch "schlecht" aus... ist bei mir übrigens nur beim textfeld so. wenn ich normalen text schreibe, dann siehts gut aus.


als Antwort auf: [#242942]

Problem mit Game

Batam
Beiträge gesamt: 328

6. Aug 2006, 16:00
Beitrag # 15 von 16
Beitrag ID: #243065
Bewertung:
(7639 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi.

Schau dir mal alles an was du zu Anti-Aliasing und Text in der Hilfe bzw. dem Handbuch finden kannst.

mfg, Batam


als Antwort auf: [#242950]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!