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

Topics - 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
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
#3
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
#4
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.
#5
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