Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

Multi-Threading

Hilfe beim Programmieren in Casio Basic.

Multi-Threading

Beitragvon mpmxxd » Do 7. Nov 2013, 23:40

Hallo liebe Casio Basic Programmierer,

ich versuche seit längerem Spiele mit meinem GTR zu programmieren und stoße dabei immer wieder an die Grenze, dass ich nicht weiß, wie ich es realisieren kann, meinen "Spieler" (ein per Locate erzeugter Punkt) zu bewegen, gleichzeitig kleine Sternchen (*) zu "schießen" und eine Art automatisch generierte Gegner (ein paar Xe) auf meinen Spieler zuwandern zu lassen, ohne dass ich mich bei besagten Abläufen nicht bewegen kann, d.h. Es gibt ja nur eine spielkontrolliende und tastenüberwachende Spielschleife. Wie soll ich per Locate erzeugte Zeichen verzögert (!) bewegen, ohne dass die Spielerbewegung aufgrund dieser Verzögerung nicht möglich ist? Für mich ist es logisch, dass die Schleife die Verzögerung ja bei jedem Schleifendurchlauf "erleiden" muss - nur wie kann man das intelligent umgehen?

Vielen Dank schon einmal im Voraus und freundliche Grüße
mpmxxd
mpmxxd
 
Beiträge: 2
Registriert: Mo 4. Nov 2013, 19:04

Re: Multi-Threading

Beitragvon Pali64 » Fr 8. Nov 2013, 03:14

Hallo mpmxxd
Alsooo.... da hast du gleich mehrrere Fragen verpackt :-)

Um nicht bei einer Schleife für Verzögerungen nix zu tuhn musst du darin GetKey anweisungen durchlaufen, dann kanst du Interaktionen ausführen....
ABER umm es sinfoll zu machen und nicht dauernde (Nichtsnutzschlaufen) zu durchlaufen musst du ein solches programm als Baumstrucktur aufbauen.
das heist du durchläufst immer das ganze programm, setzt matrixen mit buchstaben oder Zahlen und jedesmal beim durchlaufen zählst du die
variablen weiter. BEISPIEL:
2 Variablen kreieren "S10.10" und "G10.10" für ein 10x10 Spielfeld ...S= Spieler und G= Gegner.
wenn dan zum beispiel G1,1 (Für gegner an der Position 1.1)
den wert 32 (Verzögerung von 32 durchläufen gehe zum nächsten Feld)
erreicht hat setzt du diesen auf "0" und G2.1 auf 1
und somit ist dein Gegner ein Feld nach unten gewandert.....
Jetzt musst du nur die Variablen G und S als "Undmatrix" Verknüpfen und wenn das Resultat /= (für Ungleich) "0" ist hat eine Kollision statgefunden.
Also Gegner hat spieler erwischt.

Das waren einfach mal paar Tips ;-) aber es gibt mitlerweile ghute Tutors für CASIO's mit solchen Tipps ;-)

Falls es dir zu kompliziert wahr, wie ich das Oben beschrieben hab, melde dich einfach nochmals und ich werde es versuchen zu erklären....

Gruss Pali64
Pali64
 
Beiträge: 14
Registriert: Fr 18. Okt 2013, 10:08
Taschenrechner: TV-9850GB PLUS & CFX-9850G u.v.m....

Re: Multi-Threading

Beitragvon mpmxxd » Fr 8. Nov 2013, 16:17

Hallo Pali64,

erstmal vielen vielen Dank für die schnelle und sehr hilfreiche Antwort! Logisch, dass in der Verzögerungsschleife eine Tastenabfrage erfolgen muss, damit mein Spieler nicht laggt. Vielen Dank nochmal dafür!
Mein Problem ist, dass ich mich an Matrizen noch nicht herangewagt habe und alles mit einfachen Variablen und Schleifen versucht habe - war ja klar, dass irgendwo eine Grenze ist. Ich arbeite mich gerade ein, dennoch verstehe ich das genaue Vorgehen nicht ganz, so wie du es erläutert hast. Ich weiß vor allem nicht, wie ich die Spieler-/Gegnermatrix erzeugen soll, denn laut Definition ist diese ja:

[[1,2,3][4,5,6]] -> Mat S

Nur brauche ich doch theoretisch nur einen X- und einen Y-Wert für die zweidimensionale Positionierung auf dem GTR?

Und nochmal ganz was anderes: Wie ist es zu realisieren, wenn ich nicht unbedingt auf Textausgabe sondern Grafikausgabe aufbauen will? Ich möchte ja nicht unbedingt nur die im GTR vorhandenen Zeichen verwenden, sondern gewisse Figuren oder Spieler auch selbst zeichnen und bewegen lassen. Unmöglich scheint es ja auf jeden Fall nicht zu sein - aber möglich für normale Menschen? Die Grafikausgabe soll ja ziemlich langsam sein.


Vielen Dank für deine/eure Hilfe (schon im Voraus) und liebe Grüße
mpmxxd
mpmxxd
 
Beiträge: 2
Registriert: Mo 4. Nov 2013, 19:04

Re: Multi-Threading

Beitragvon Anderesio » Mo 18. Nov 2013, 19:27

DIe Graphikausgabe ist wirklich ziemlich langsam,
was du aber tun könntest, deine figur probe zu zeichnen, ggf in einem extra prog, welches du aufrufst.
Dabei bestimmst du für jeden Pxl oder Plot (je nachdem, welches Graphikelement du verwendest) mit einem Offset.

zB.: du möchtest eine Figur nutzen, die einfach ein 2x2 Pxl großes Feld ist, dann setzt du einfach:
Code: Alles auswählen
Plot x, y
Plot 1+x, y
Plot x, 1+y
Plot 1+x, 1+y


Bedenke jedoch, wenn du Graphikelemente benutzt, dann wechselt der GTR automatisch zum Graphikscreen.
Genieße den heutigen Tag,
denn mit dem heutigen Tag,
beginnt der Rest deines Lebens
Benutzeravatar
Anderesio
 
Beiträge: 158
Registriert: Di 30. Nov 2010, 20:41
Taschenrechner: .
fx-9750GA PLUS
fx-9860G SD
ClassPad 300

Re: Multi-Threading

Beitragvon elias.koegel » Sa 23. Nov 2013, 22:29

Kleiner InsiderTipp: Grafikausgabe lässt sich beschleunigen durch geschickte Nutzung von Bildschirmfotos/Bildern. Zum Beispiel Karten nicht zeichnen, sondern als Bild hinterlegen. Ebenso der Wechsel zwischen verschiedenen Modi kann so schnell gemacht werden.
Benutzeravatar
elias.koegel
 
Beiträge: 296
Registriert: Mo 8. Dez 2008, 18:16
Taschenrechner: .
CFX 9850 GB+
FX 991s


Zurück zu Casio Basic (Alle Modelle, die dies unterstützen)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste