Vereinfachen von If - Befehlen!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Gast

Betreff: Vereinfachen von If - Befehlen!

BeitragDi, Jun 07, 2005 13:46
Antworten mit Zitat
Hi!
Also ich hab mir jetz den Kopf zerbrochen wie ich den folgenden Code-
abschnitt vereinfachen kann! Dabei will ich anmerken (bitte nicht
hauen) das Zeichen$(1) das erste Zeichen eines Strings ist!
Das Problem ist: Ich will nen String mit bis zu 30 Zeichen auslesen! Sad

Könnt euch ja vorstellen wie viel Code meine Lösung brauchen würde!
Aber ich komm einfach nicht auf eine geschickte Lösung!
Und wenn ja... dann funct sie nicht.

Edit: Übrigens will ich für jedes einzelne ausgelesene Zeichen
ein Image Zeichnen!

BlitzBasic: [AUSKLAPPEN]

If Zeichen$(1) = \"A\" Then DrawImage A,X,Y
If Zeichen$(1) = \"B\" Then DrawImage B,X,Y
If Zeichen$(1) = \"C\" Then DrawImage C,X,Y
If Zeichen$(1) = \"D\" Then DrawImage D,X,Y
If Zeichen$(1) = \"E\" Then DrawImage E,X,Y
If Zeichen$(1) = \"F\" Then DrawImage F,X,Y
If Zeichen$(1) = \"G\" Then DrawImage G,X,Y
If Zeichen$(1) = \"H\" Then DrawImage H,X,Y
If Zeichen$(1) = \"I\" Then DrawImage I,X,Y
If Zeichen$(1) = \"J\" Then DrawImage J,X,Y
If Zeichen$(1) = \"K\" Then DrawImage K,X,Y
If Zeichen$(1) = \"L\" Then DrawImage L,X,Y
If Zeichen$(1) = \"M\" Then DrawImage M,X,Y
If Zeichen$(1) = \"N\" Then DrawImage N,X,Y
If Zeichen$(1) = \"O\" Then DrawImage O,X,Y
If Zeichen$(1) = \"P\" Then DrawImage P,X,Y
If Zeichen$(1) = \"Q\" Then DrawImage Q,X,Y
If Zeichen$(1) = \"R\" Then DrawImage R,X,Y
If Zeichen$(1) = \"S\" Then DrawImage S,X,Y
If Zeichen$(1) = \"T\" Then DrawImage T,X,Y
If Zeichen$(1) = \"U\" Then DrawImage U,X,Y
If Zeichen$(1) = \"V\" Then DrawImage V,X,Y
If Zeichen$(1) = \"W\" Then DrawImage W,X,Y
If Zeichen$(1) = \"X\" Then DrawImage IX,X,Y
If Zeichen$(1) = \"Y\" Then DrawImage IY,X,Y
If Zeichen$(1) = \"Z\" Then DrawImage Z,X,Y

Würd mich über nen Tipp sehr freuen!
MFG DamienX

P.S.: An alle die am Leinwand-Contest auf Blitzprojekt teilnehmen:
Da ich schon aus einigen Quelle anreitze bekommen habe werde ich nicht
offiziell teilnehmen, d. h. ihr könnt mir helfen ohne das ich eure Ideen klau! Smile --> Nur zur Vorbeugung! Smile

bruZard

BeitragDi, Jun 07, 2005 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau Dir in der Online-Hilfe mal das Konstruct Select ... Case ... End Select an, das sollte Dir helfen.

[EDIT]
Zum Thema Bitmapfont zeichnen. Schaue Dir mal folgendes Bild an:

user posted image

Die Anordnung der Zeichen entspricht dem ASCII Zeichensatz. Ich beginne dort mit dem Leerzeichen, welches dem ASCII Code 32 entspricht. Wenn ich das Bild nun mittels
Code: [AUSKLAPPEN]

myFont = LoadAnimImage("fnt16x16.bmp",16,16,0,256)

habe ich ein AnimImage in welchem jedes Frame dem ASCII Code (-32) entspricht.

Ein einfaches
Code: [AUSKLAPPEN]

DrawImage myFont,x,y,Chr(zeichen$)-32

zeichnet das richtige Frame des Bildes zum eingegebenen Buchstaben.
[/EDIT]
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
  • Zuletzt bearbeitet von bruZard am Di, Jun 07, 2005 13:56, insgesamt einmal bearbeitet

Jan_

Ehemaliger Admin

BeitragDi, Jun 07, 2005 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
lol.
kleine Denkhilfe, es gibt schleifen:
BlitzBasic: [AUSKLAPPEN]

Dim buchstabe(255)
For i=0 To 255
buchstabe(i)=LoadImage(...)
Next
For i =1 To Len(zeichen)
DrawImage buchstabe(Asc(Mid(zeichen,i,^1))),x+i*ImageWidth(buchstabe(1)),y
Next

between angels and insects
 

Gast

BeitragDi, Jun 07, 2005 14:04
Antworten mit Zitat
@ _Jan: Mit ner Schleife ala _Jan hab ichs schon versucht!
statt dem (1) einfach (I) und in ne For-Next Schleife gepackt!
Funct nicht so wie ich haben will und mann muss bedenken dass
ich die X-Koordinate verschieben will ab Zeichen$(2) (d.h. z.B. X + 144)!
Also nur zur Info! Hab schon verstanden das es Schleifen gibt Smile!
Ich versuch mich jetz nochmal dran!

@Bruzard: Ich werd mich mal mit dem Konstrukt befassen! Kenn die Befehle
zwar hab sie aber in solch einem zusammenhang noch nie benutzt! Aber wie gesagt ich versuchs jetz mal! Mr. Green

MFG DamienX

Alfadur

BeitragDi, Jun 07, 2005 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Function draw_text(textstring$,x,y,zent=0)
   If zent=1 Then x=x-Len(Textstring$)*3:y=y-3
   For i=1 To Len(textstring$)
      buchstabe$=Mid(textstring$,i,1)
      DrawImage img_font,x,y,Asc(buchstabe$)-32
      x=x+6
   Next
End Function


das is mein code zum bitmapfontzeichnen... mein font ist 6x6, deswegen die 3 und 6 im code... mußt du noch an deinen anpassen.

meinen font dazu gibts hier :
http://www.sucox.art-fx.org/Bl...timage.png
A Cray is the only computer that runs an endless loop in less than four hours.

Jan_

Ehemaliger Admin

BeitragDi, Jun 07, 2005 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
@DamienX
naja, aber es ist der richtige ansatz, was weiß ich, wie du es haben willst?
ALSO, GEHE MICH NICHT AN!
between angels and insects
 

Gast

BeitragDi, Jun 07, 2005 14:49
Antworten mit Zitat
@_Jan: Hey hey hey! Bleib locker!
Ich glaub du hast da was falsch verstanden!
Wollte dich nicht "angehen"! Wollte damit nur ausdrücken
dass ich nicht zu blöd bin das ganze in die Schleife zu packen! Wink
Du hast ja recht! Aber ich arbeite noch daran!

@Alfadur: Coole Function! Hab eigentlich noch nie an Funktionen
mit den Parametern rumgespielt (also function sowieso(Parameter1,...))
muss ich jetzt auch mal versuchen! Danke!!!

MFG Damien X
 

Gast

BeitragDi, Jun 07, 2005 16:30
Antworten mit Zitat
@Alfadur:
So hab jetz dein Code durchgeackert und umgeschrieben!
Is genial einfach im Gegensatz zu meiner "Lösung"!
Ich glaub ich muss mich mehr mit den Fähigkeiten von BB
vertraut machen! :$

Nochmals Danke!
MFG DamienX

Alfadur

BeitragDi, Jun 07, 2005 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
von was für einem leinwand contest redest du? schick mal nen link please...!?!
A Cray is the only computer that runs an endless loop in less than four hours.

Spikespine

BeitragDi, Jun 07, 2005 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ich vermute, er meint diesen: http://www.blitz.inarie.de/viewtopic.php?t=66

Das ist der einzige auf projectblitz

Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Alfadur

BeitragDi, Jun 07, 2005 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
alles klar, da hab ich ja schon was veröffentlicht .-)
A Cray is the only computer that runs an endless loop in less than four hours.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group