Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - thomasp

#1
Folgendes aus den Tutorials:

LOADSPRITE "raumschiff.png",0
GLOBAL playerx = 200
GLOBAL playery = 440

LOADSPRITE "image1.png",1
TYPE SCHUSS
   x
   y
ENDTYPE

LOCAL schuesse AS SCHUSS  //array of SCHUSS types

WHILE TRUE
IF KEY(203) THEN DEC playerx,2
IF KEY(205) THEN INC playerx,2

LOCAL neuschuss AS SCHUSS
IF KEY(57)
neuschuss.y=400
neuschuss.x=playerx+10
DIMPUSH schuesse[], neuschuss
ENDIF


playerx = MAX(MIN(playerx,290), 0)
DRAWSPRITE 0,playerx,playery


SHOWSCREEN
WEND

erzeugt:

*** Configuration: WIN32 ***
precompiling:
GPC - GLBasic Precompiler V.8.142 SN:d4afcf0b - 3D, NET
Wordcount:22 commands
compiling:
C:\DOKUME~1\Besitzer\LOKALE~1\Temp\glbasic\gpc_temp0.cpp: In function `int __GLBASIC__::__MainGameSub_()':
C:\DOKUME~1\Besitzer\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:123: error: no matching function for call to `DIMPUSH(__GLBASIC__::SCHUSS&, __GLBASIC__::SCHUSS&)'
C:/Programme/GLBasic/Compiler/platform/Include/glb.h:895: note: candidates are: void __GLBASIC__::DIMPUSH(__GLBASIC__::DGIntArray&, DGInt)
C:/Programme/GLBasic/Compiler/platform/Include/glb.h:901: note:                 void __GLBASIC__::DIMPUSH(__GLBASIC__::DGNatArray&, DGNat)
C:/Programme/GLBasic/Compiler/platform/Include/glb.h:906: note:                 void __GLBASIC__::DIMPUSH(__GLBASIC__::DGArray<__GLBASIC__::DGStr>&, __GLBASIC__::CGStr)
C:/Programme/GLBasic/Compiler/platform/Include/glb.h:907: note:                 void __GLBASIC__::DIMPUSH(__GLBASIC__::DGArray<__GLBASIC__::DGStr>&, DGInt)
*** FATAL ERROR - Bitte die Compiler-Ausgabe ins Forum kopieren
_______________________________________
*** Fertig ***
Dauer: 1.1 sek. Zeit: 11:11
Erstellen: 0 erfolgreich.
*** 1 FEHLGESCHLAGEN ***
#2
Schick!  :)
#3
Habe jetzt mal probiert, Playmovie auf meinem iPod Touch zum Laufen zu bringen, aber er spielt nichts ab. Die loading anim des iPod videoplayers erscheint auf ewig aber kein Bild oder Ton.

Dieselbe Videodatei (einmal als .mp4 und einmal als .m4v eingebunden) spielt, über iTunes synchronisiert, ohne Probleme auf dem iPod Touch.

Code ist einfach

PLAYMOVIE "test.m4v"

und die Video-Datei liegt im /Media-Ordner. Verwende iPhone SDK 3.x, das ganze unter OSX 10.6

GLBASIC ist die aktuelle Version (Stand: gestern).

Der Konverter, den ich verwende hat speziell eine iPod Touch-Option. Video-Datei ist ca. 27MB gross. Glaube eher nicht, dass es am Video selber liegt. Vielleicht kann PLAYMOVIEW mit SETDIR nichts anfangen? Pfad-Problem?
#4
Prima, danke. Kann ich denn (mit mp4's) unter Windows testen,was ich dann auf dem iPod Touch sehen kann?

Ein simples:

PLAYMOVIE "test.mp4"
SHOWSCREEN
MOUSEWAIT

zeigt nichts an, außer einen schwarzen Bildschirm. Die Datei ist in Windows aufrufbar, startet Quicktime. Oder liegt das an einer Beschränkung der "Demo"-Version von glbasic?
#5
Wer hat mit playmovie Videos auf iPhone abgespielt und kann Tipps zu:

Formate bzw aspect Ratio (Querformat)
geeignete Codecs und Bitraten
konvertierungstools
maximale dateigroessen

geben? Gernot?

Patrick
#6
Oder vielleicht mit einem Kreis als Sprite, mal schauen was schneller läuft.
#7
Prima, es läuft, danke. Jetzt kleben Sie, aber man merkt (wie immer) das der Teufel im Detail steckt... muss die Punkte verbinden und überhaupt die ganze Malerei muss "dicker" werden. Und dann mal schauen wie es sich auf dem F200 verhält.
#8
> kleines problem mit showscreen , der flipt nicht nur die Buffer sonder
> löscht den Backbuffer leider auch gleich mit.

Tatsache? Schönen Dank. Wie hält man denn dann auf Bitmap-Ebene den Status? Gibt es so etwas wie einen schnellen Blockmove-Befehl, Backbuffer nach Zwischenspeicher-Buffer sichern?

Erstmal Semmeln holen...
#9
Also so ähnlich aber da bleibt kein Pixel am Bildschirm kleben...

Code (glbasic) Select
WHILE TRUE
MOUSESTATE mx, my, b1, b2
IF b1
SETPIXEL mx, my, RGB(255, 255, 255)
ENDIF
SHOWSCREEN
WEND
#10
Hi, bin absoluter GLBASIC-Neuling, nachfolgend das erste kleine Programm, vielleicht hilft es ja dem einen oder anderen bei seinen ersten Schritten. Insbesondere um zu verstehen:

- wie ein Hintergrundbild geladen wird

- wie (Sprite)Bilder geladen und wieder abgerufen werden

- dass man sich um die Darstellung der Einzelbilder einer Animation selbst kümmern muss

- wie Tastaturabfragen funktionieren

- wie einfache Kollisionsabfragen funktionieren (SPRCOLL)

- wie man Bildabfolgen in der Hauptschleife verlangsamen kann

Das kann man womöglich in GLBASIC komprimierter hinkriegen, aber jedes Feedback sehr willkommen. Und wie bei Backrezepten: ein paar Zutaten müsst Ihr mitbringen, insbesondere Graphiken. Das Programm ist auf eine Bildschirmgröße von 320 x 240 Pixel angelegt, also bitte ein entsprechendes Hintergrundbild mit dem Namen "kann-sonstwie-heissen.bmp" (siehe ganz unten im Code) in das Projektverzeichnis.

Dann die "Ninja"-Sprites: die Bilder für Spieler 1 in das Unterverzeichnis /spieler1/ und die für Spieler 2 in, logisch, /spieler2/. Die Bildfolgen heissen attack-e-0.bmp bis attack-e-12.bmp und running-e-0.bmp bis running-e-7.bmp. Entsprechend bei Spieler 2: attack-w-0.bmp bis attack-w-12.bmp und running-w-0.bmp bis running-w-7.bmp.

Diese Bilder müsst ihr nicht selber malen (hab ich auch nicht), die gibt es hier (mit leicht anderen Namen - und schön rosa anmalen, GLBASIC mag pinke Hintergründe für die Transparenz): http://reinerstileset.4players.de/humansD.html

Und jetzt endlich der Code:

Code (glbasic) Select
// --------------------------------- //
// Project: Ninja
// Start: Sunday, November 18, 2007
// IDE Version: 5.055


GOSUB init
verlangsamer = 5
WHILE TRUE
GOSUB spieler
GOSUB anim
GOSUB drawall
SHOWSCREEN
WEND
END

SUB anim:
DEC verlangsamer, 1
IF verlangsamer = 0
INC spieler1anim,1
IF spieler1anim=8
spieler1anim = 0
ENDIF
IF spieler1anim=22
IF SPRCOLL (spieler1anim, spieler1posx, spieler1posy, spieler2anim, spieler2posx, spieler2posy)
  INC spieler1punkte,50
  ENDIF
spieler1anim = 0
ENDIF
INC spieler2anim,1
IF spieler2anim=38
spieler2anim = 30
ENDIF
IF spieler2anim=52
IF SPRCOLL (spieler1anim, spieler1posx, spieler1posy, spieler2anim, spieler2posx, spieler2posy)
  INC spieler2punkte,50
  ENDIF
spieler2anim = 30
ENDIF
verlangsamer = 5
ENDIF
ENDSUB

SUB drawall:
DRAWSPRITE spieler1anim, spieler1posx, spieler1posy
DRAWSPRITE spieler2anim, spieler2posx, spieler2posy
PRINT spieler1punkte, 10,10
PRINT spieler2punkte, 50,10
ENDSUB


SUB spieler:
IF (KEY(45)=1)
INC spieler1posx,laufen
IF spieler1posx>255
spieler1posx = 255
ENDIF
ENDIF
IF (KEY(44)=1)
DEC spieler1posx,laufen
IF spieler1posx < -35
spieler1posx = -35
ENDIF
ENDIF
IF (KEY(205)=1)
INC spieler2posx,laufen
IF spieler2posx>260
spieler2posx = 260
ENDIF
ENDIF
IF (KEY(203)=1)
DEC spieler2posx,laufen
IF spieler2posx < -35
spieler2posx = -35
ENDIF
ENDIF
IF (KEY(46)=1) AND (spieler1anim<10)
spieler1anim = 10
ENDIF
IF (KEY(208)=1) AND (spieler2anim<40)
spieler2anim = 40
ENDIF

ENDSUB

SUB init:
LOCAL i
// Globals
laufen = 2
rennen = 4
// Spieler 1 (von links nach rechts)
spieler1anim = 0
spieler1posx = 10
spieler1posy = 150
spieler1punkte = 0
spieler2punkte = 0
// Spieler1 läuft
FOR i=0 TO 7
LOADSPRITE "spieler1/running-e-"+i+".bmp", 0+i  // Spieler1 läuft mit Basis-ID: 0
NEXT
// Spieler1 greift an
FOR i=0 TO 12
LOADSPRITE "spieler1/attack-e-"+i+".bmp", 10+i  // Spieler1 greift an mit Basis-ID: 10
NEXT
// Spieler 2
spieler2anim = 30
spieler2posx = 250
spieler2posy = 150
// Spieler2 läuft
FOR i=0 TO 7
LOADSPRITE "spieler2/running-w-"+i+".bmp", 30+i  // Spieler2 läuft mit Basis-ID: 30
NEXT
// Spieler2 greift an
FOR i=0 TO 12
LOADSPRITE "spieler2/attack-w-"+i+".bmp", 40+i  // Spieler2 greift an mit Basis-ID: 40
NEXT
// Hintergrundbild
LOADBMP "kann-sonstwie-heissen.bmp"  // lädt ein bild und verwendet es als Hintergrund
//
ENDSUB
Die Tasten: Y,X,C und <-, V, ->

Viel Spaß damit!

Patrick
#11
Viewport ist prima, aber nicht das Programm soll malen, sondern der User, per Stift, so à la:

setze vier viewports (mehrere Malbereiche auf demselben Screen)
warte auf mousedown
malbereich = viewport-da-ist-der-stift-drin
solange mousedown (Stift gleitet auf dem touchscreen rum)
    setze pixel mouse-x, mouse-y
    merke[zeiteinheit] = "mouse-x, mouse-y"
end-solange
// mouseup, der User hat den Stift gehoben
if kuckMalObHalbKreis(malbereich,merke[]) print "gut gemalt"
else print "das war kein halbkreis, so ein Gekrakel... nochmal"

repeat oben

end
#12
Wie kann ich einen F200-User in einem definierten Bildschirmbereich (z.B. 100x30 Pixel Rechteck) mit dem Stift einen Halbkreis malen lassen? Danke, bin noch neu und im Forum nichts gefunden.
#13
Hallo,

möchte auf einem GP2X F100 ein AVI-Video aus GLBASIC heraus starten. Mit folgendem Code:

> fullmoviename$="pharaonen.avi"
> LOCAL rv, good
> good = SHELLCMD("/usr/gp2x/mplayer \"" + fullmoviename$ + "\"", TRUE, TRUE, rv)
> PRINT "Aufruf ging: "+good, 0,0
> SHOWSCREEN
> KEYWAIT

Im Ergebnis erscheint aber kein Video, Bildschirm bleibt schwarz, nach Tastendruck erscheint kurz links oben "Aufruf ging: 1" und das wars. Das AVI selbst funktioniert (ist auf der SD card), kann man am F100 direkt mit dem eingebauten Videoplayer über die GP2X-Benutzeroberfläche aufrufen.

Die GLBASIC-Funktion PLAYMOVIE selbst hat auf dem F100 keine Funktion, bleibt alles schwarz.

Vielleicht ein Pfad-Problem? Der Rückgabewert des mplayer (rv) lautet 256.
Habe es auch mit folgenden Pfaden versucht:

fullmoviename$="/mnt/sd/gp2x/playvideo/pharaonen.avi"
und
fullmoviename$="../../mnt/sd/gp2x/playvideo/pharaonen.avi"

Hat jemand noch eine Idee, wie man Videos auf dem GP2X starten könnte? Ziel ist aus einem GLBASIC-Programm heraus ein kurzes Video zu launchen, dies wird abgespielt und kehrt dann zurück zum GLBASIC-Programm.

Patrick