Seitenumbruch

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Blitzprogger

Betreff: Seitenumbruch

BeitragSa, März 01, 2008 10:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich progge gerade an meinem ersten Spiel- einem Textadventure. Und da will ich dass wenn man unteren Bildschirmrand ankommt, dass der Text nich einfach darin versinkt. In den Tutorials hab ich grad nichts gefunden was mir weiterhelfen könnte. Bitte um Rat.

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Dottakopf

BeitragSa, März 01, 2008 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
was genau bedeutet "dass der Text nich einfach darin versinkt"?

Ich vermute mal du benütut "input" zur eingabe und "print" zur ausgabe.
Wenn du jetzt möchtest, das die eingaben nicht immer weiter nachunten wandern, kannst du den "locate x,y"
Befehl anwenden. Natürlich wäre dan ein cls noch angebracht, damit nicht alles übereinander gemalt wird.

hier ein Beispiel:
Code: [AUSKLAPPEN]

Graphics 640,480,16,2




   Locate 0,0
   name$ = Input("wie ist dein name ")
   Print "ahh dein name ist also " +name
   WaitKey()
   Cls
   
   
   Locate 0,0
   nachname$ = Input("wie ist dein nachname " )
   Print "Ah grüß gott herr " + nachname + " " + name
   WaitKey()
   Cls




Siehe dazu folgende befehle :
http://www.blitzbase.de/befehle2d/locate.htm
http://www.blitzbase.de/befehle2d/waitkey.htm
http://www.blitzbase.de/befehle2d/cls.htm

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

BladeRunner

Moderator

BeitragSa, März 01, 2008 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder noch besser, Du vergisst Input, Print und Locate, die sind nämlich nur noch aus Kompatibilitätsgründen in der Sprache und haben in modernen Projekten nix mehr verloren.
Benutze anstatt print besser ql:text
Um Input zu ersetzen empfehle ich eine Suche hier im Forum nach "Eingaberoutine", am besten im Codearchiv.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Blitzprogger

BeitragSa, März 01, 2008 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ok.
ich versuche es mit Locate weil Iput sehr wichtig is
danke für die schnelle antwort

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

D2006

Administrator

BeitragSa, März 01, 2008 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich rate ebenfalls von der Benutzung von Print, Locate, Write und Input strengstens ab.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

The_Nici

BeitragSa, März 01, 2008 12:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatte mal einen Textscrollingcode gemacht, der Dateien auslesen konnte, jedoch ohne Zeilenumbruch.

Code:
Code: [AUSKLAPPEN]

Graphics 640,480,0,2
SetBuffer BackBuffer()
Dim Textarray$(1000)
Datei=ReadFile("blubb.txt")
i=1
readed$=""
Repeat
   readed$=ReadLine(Datei)
   Textarray(i)=readed$   ;Text der Datei auslesen
   i=i+1
   If Eof(Datei) Then Exit
Forever
Textarray(i-1)=""
CloseFile(Datei)
scrolled%=1
zeilen%=0
While Not KeyDown(1)
   zeilen=0   ;Die gemalten Zeilen wieder auf 0 setzen.
   scrolled=scrolled-MouseZSpeed()   
   If scrolled<1 Then scrolled=1
   maxscroll=scrolled*53   ;Bis zum Bildschirmrand
   While maxscroll>1000
      maxscroll=maxscroll-1   ;Darauf achten, dass man nicht aus dem Array gelangt!
   Wend
   For i=scrolled To maxscroll
      zeilen=zeilen+1      ;Gemalter Zeilenwert.
      Text 0,zeilen*12,Textarray(i)   ;Malen
   Next
   Text 400,0,scrolled
   Flip
   Cls
Wend


Du könntest um einen Zeilenumbruch an der Seite zu machen, die Stringlänge mit Stringwidth mit der x-Grösse des Grafikfensters vergleichen, und wenn es zu gross ist kopierst du mit ql:Right oder ql:Mid die restlichen Zeichen aus. Die anzahl der Vorigen zeichen kannst du ermitteln, in dem du rechnest:
(GesamteStringlänge(ql:Stringwidth) - GrafikfensterX) : Zeichengrösse
  • Zuletzt bearbeitet von The_Nici am Sa, März 01, 2008 12:57, insgesamt einmal bearbeitet

Blitzprogger

BeitragSa, März 01, 2008 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Da fällt mir noch ein-
man sollte eigentlich schon sehen was bisher passiert ist, deshalb brauche ich wohl eher, wenn man unten ankommt, dass da, dann die Seite "länger" wird und man mit dem Mausrad (oder den Pfeiltasten) rauf und runter scrollen kann. Wäre nett wenn man mich auf ein Tutorial aufmerksammachen könnte. Wink

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

The_Nici

BeitragSa, März 01, 2008 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Siehe den oberen post?

Blitzprogger

BeitragSa, März 01, 2008 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs in BB kopiert, doch erkennt einige Funcs net. Crying or Very sad (hab funcs wie scrolled net und weiss au net wie det geht) Denoch danke.

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

SpionAtom

BeitragSa, März 01, 2008 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...ght=scroll
Irgendwo da hab ich eine Lösung für Texte implementiert.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Blitzprogger

BeitragSo, März 02, 2008 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Das is ja ne gute Lösung - aber der input ist echt sehr wichtig. Ich könnt ihn höchstens weglassen wenn ich Schaltflächen reinbauen könnte und da komm ich auch schon e bissel an meine Grenzen.

Hier ma ein teil meines codes:
Code: [AUSKLAPPEN]


Function Region1()
Print "Du befindest dich im Wald des Lebens"
Print "Im Dickicht erkennt ihr einen Wolf. Er ist alleine. Greift ihr ihn an?
r1w1$ = Input()
If r1w1 = "ja" Then
 wolf1.feind = New feind
 wolf1\name$="Wolf"
 wolf1\schaden%=3
 wolf1\leben3%=5
ElseIf r1w1 = "nein" Then
 Print "Als ihr euch vorbeischleichen wollt wird er durch seine geschärften Sinne auf euch aufmerksam!"
 Print "Wegrennen bringt nichts. Ihr müsst kämpfen!"
 wolf1.feind = New feind
 wolf1\name$="Wolf"
 wolf1\schaden%=3
 wolf1\leben3%=5
EndIf
If wolf1\leben3%= 5 Then
 wolf1\leben3%= - schaden1 - schaden2 - mana2
 leben1% = leben1 - schaden
 leben2% = leben2 - schaden
EndIf
If wolf1\leben3>0 Then
 Print "Der Wolf ist nicht tot. Rennt weg!!"
 r1w4$ = Input()
EndIf
If r1w4 = "ja" Then
 Print "Ihr entkommt in dem ihr einen Wasser fall herunterspringt!"
EndIf
If wolf1\leben3<1 Then
 Print "Der Wolf ist tot. Wollt ihr abreisen?"
 r1w2$ = Input()
EndIf
If r1w4 = "nein" And wolf1\leben3<1 Then
 Print "Der Wolf ist tot- und welch Wunder- hatte 50 Goldstücke dabei."
 Gold% =Gold + 50
EndIf
If r1w2 = "nein" Then
 Print "Als ihr noch länger herumstreift findet ihr eine Höhle mit einem Schatz."
 Gold% =Gold + 100
 Print "Nun müsst ihr aber abreisen."
EndIf
If r1w4 = "nein" Then
 Print "Also gut."
 wolf1\leben3%= - schaden1 - schaden2 - mana2
 leben1% = leben1 - schaden
 leben2% = leben2 - schaden
EndIf
Print "Du hast die Möglichkeit nach Osten oder nach Süden zu gehen. Im Osten hast du gestartet und im Süden erkennt ihr die Türme einer Stadt."
Print "Schreibe ost oder süd."
r1$ = Input()
If r1 = "ost" Then
 Region2
ElseIf r1 = "süd" Then
 Region5
EndIf
End Function


Von der Sorte hab ich schon 9
Ich hoffe einer kann mich auf ein Tut. oder so hinweisen wo man lernt wie man Schaltflächen positioniert etc. Wie man auch uschwer erkennen kann behersche ich vorallem nur Print, Input und If.

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Plasma

Betreff: nette idee so ein textadventure

BeitragSo, März 02, 2008 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
aber du solltest die erstmal über die befehle und deren wirkungsweise klarmachen
damit kommst du schneller vorran und machst einige sachen einfacher/effizienter

so währe eine baumstruktur deiner orte verknüpft mit den dazugehörigen monstern,deren möglichkeiten,deinen möglichkeiten ,besser da du dann auch einfacher andere sachen hinzufügen kannst ,

The_Nici

BeitragSo, März 02, 2008 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Update mal deine Blitzversion, mein Code sollte einwandfrei funktionieren.

Auf Input kann man 100% verzichten.
Siehe
ql:Getkey
ql:Chr
ql:Text

Diese Befehle gehören zu den Grundkenntnissen!

Blitzprogger

BeitragMo, März 03, 2008 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich will dass man Tasten drückt ist das ganz gut, doch würde ich gerne Schaltflächen einbauen. (So mit Schalter "ja" und "nein")
Ich such mal in den tuts.

Ps: Ist echt toll wie zügig ihr antwortet Very Happy

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

The Shark

BeitragMi, März 05, 2008 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab da mal was programmiert. Es könnte dich etwas erschlagen Very Happy, ich erklär dir aber gern über PN die funtionsweise.

Code: [AUSKLAPPEN]

;GUI
Type Tbutton
   Field name$
   Field x
   Field y
   Field width
   Field height
   Field tooltip$
   Field mark
   Field textx
   Field texty
End Type
Global mouse_X,mouse_Y
Global gui_Tbutton.Tbutton,button$
Global gui_width=GraphicsWidth(),gui_height=GraphicsHeight()
;GUI ENDE

;Beispielprogramm
Graphics 800, 600,0,2
SetBuffer BackBuffer()
; Schriftart
Global Schrift
Schrift=LoadFont("Arial",14)
SetFont Schrift
frametimer=CreateTimer(60)
;Buttons erstellen
new_button("Start",450,270,"Alienshooter Spielen",1,90,20)
new_button("Laden",445,295,"Gespeichertes Spiel laden",0,90,20)
new_button("Optionen",440,320,"Einstellungen bearbeiten",0,90,20)
new_button("Anleitung",435,345,"Steuerung, Hindergrundstory und mehr",0,90,20)
new_button("Beenden",430,370,"Alienshooter beenden",1,90,20)

While KeyDown(184)=False And KeyDown(62)=False
   If timer=False Then WaitTimer (frametimer)
   Cls
   ;flushs
   FlushKeys
   FlushMouse
   mouse_X=MouseX()
   mouse_Y=MouseY()
   
   draw_button()
   
   ;buttonover
   button$=check_button$()
   ;buttonhit   
   If MouseDown(1)
      If button$="Beenden"
         Goto ende
      ElseIf button$="Start"
         del_button("Start")
         del_button("Laden")
         del_button("Optionen")
         del_button("Anleitung")
         del_button("Beenden")
         Goto game
      EndIf
   EndIf
   Flip
Wend

.game

.ende
End

;GUI FUNKTIONEN
Function new_button(name$,x,y,tooltip$=False,mark=True,width=False,height=False)
   gui_Tbutton.Tbutton=New Tbutton
   If height=False
      height=FontHeight()
      If (height Mod 2)<>0
         height=height+1
      EndIf
      height=height+2
   EndIf
   If width=False
      width=StringWidth(name$)+10
   EndIf
   gui_Tbutton\name$=name$
   gui_Tbutton\x=x
   gui_Tbutton\y=y
   gui_Tbutton\width=width
   gui_Tbutton\height=height
   gui_Tbutton\tooltip$=tooltip$
   gui_Tbutton\mark=mark
   gui_Tbutton\textx=x+(width/2)
   gui_Tbutton\texty=y+(height/2)
End Function
Function draw_button()
   Local textx,texty
   For gui_Tbutton.Tbutton=Each Tbutton
      Color 255,255,255
      Rect gui_Tbutton\x,gui_Tbutton\y,gui_Tbutton\width,gui_Tbutton\height,0
      Text gui_Tbutton\textx,gui_Tbutton\texty,gui_Tbutton\name$,1,1
   Next
End Function
Function check_button$()
   Local returnvalue$,breite,hoehe=FontHeight(),textx
   If (hoehe Mod 2)<>0
      hoehe=hoehe+1
   EndIf
   hoehe=hoehe+2 ; rand
   For gui_Tbutton.Tbutton=Each Tbutton
      If mouse_X>=gui_Tbutton\x And mouse_X<=(gui_Tbutton\x+gui_Tbutton\width) And mouse_Y>=gui_Tbutton\y And mouse_Y<=(gui_Tbutton\y+gui_Tbutton\height)
         returnvalue$=gui_Tbutton\name$
         If gui_Tbutton\mark=True
            Color 105,105,0
            Rect gui_Tbutton\x,gui_Tbutton\y,gui_Tbutton\width,gui_Tbutton\height,1
            Color 255,255,255
            Rect gui_Tbutton\x,gui_Tbutton\y,gui_Tbutton\width,gui_Tbutton\height,0
            Local xx,yy
            Color 0,0,0
            For yy = -1 To 1
               For xx = -1 To 1
                  Text gui_Tbutton\textx+xx,gui_Tbutton\texty+yy,gui_Tbutton\name$,1,1
               Next
            Next
            Color 255,255,255
            Text gui_Tbutton\textx,gui_Tbutton\texty,gui_Tbutton\name$,1,1
         EndIf
         If gui_Tbutton\tooltip <> False
            breite=StringWidth (gui_Tbutton\tooltip$)
            If (mouse_X+breite+15)>gui_width
               textx=mouse_X-breite-5
            Else
               textx=mouse_X+11
            EndIf
            Color 0,0,0
            Rect textx-2,mouse_Y-hoehe/2,breite+4,hoehe
            Color 255,255,255
            Rect textx-2,mouse_Y-hoehe/2,breite+4,hoehe,0
            Text textx,mouse_Y,gui_Tbutton\tooltip,0,1
         EndIf
         Exit
      EndIf
   Next
   Return returnvalue$
End Function
Function del_button(name$)
   For gui_Tbutton.Tbutton=Each Tbutton
      If gui_Tbutton\name$=name$
         Delete gui_Tbutton.Tbutton
         Exit
      EndIf
   Next
End Function


THE SHARK

Blitzprogger

BeitragDo, März 06, 2008 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Schönes Menü.
Aber wie du weise vorausgesehen, fühle ich mich vom code ziemlich erschlagen. Ware nett wenn des mir erklären könntest. Und nun noch ein paar Fragen:

1. Was ist "PN" / wo finde ich es?
2. Wie kann ich die "Kamera" verschieben, dass ich z.b. wie in Word scrollen kann?
3. Wie kann ich Schleifen in den hintergrund stellen? (dass ich ne Repeat Schleife im Hintergrund laufen lasse, die nicht das ganze Spiel stoppt?

Wie schon gesagt: ich arbeite mit der bb 2D Demo. Desto mehr Fragen geklät werde desto besser.

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

The Shark

BeitragDo, März 06, 2008 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
1. PN heißt private nachricht
2. Kameras gibts nur in 3d, was genau willst du scrollen?
3. in der repeat-schleife kommt alles tein, das abläuft zB

Code: [AUSKLAPPEN]

Graphics 800,600,0,2       ;Bildschirm öffnen
SetBuffer BackBuffer()     ;Setzt einen 2ten Buffer, auf einen zeichnet man, der andere wird angezeigt
timer=CreateTimer(60)      ;Setzt einen timer, damit die Prozessorlast niedrig gehalten wird und das "Spiel" nicht zu schnell läuft

While Not KeyDown(1)       ;Hauptschleife
   WaitTimer(timer)        ;Bremst das Spiel, sieht zeile 3
   Cls                     ;löscht den bilsschirm
   
   Text 0,5,"Ein text"     ;schreibt den text "Ein text" an die Position 0,5
   
   a=a+5                   ;erhöht a
   If a>GraphicsWidth()      ;wenn a größer ala die Breite des bildschirms ist
      a=a-GraphicsWidth()  ;wird die bildschirmbreite abgezogen
   EndIf
   Rect a,200,10,10        ;zeichnet ein rechteck mit der x-Koordinate a und er größe 10x10
   Flip                    ;tauscht die buffer aus
Wend
End


wenn du den code nicht verstehst, scha dir mal das hervorragende Tut von Rob an:
http://www.robsite.de/bbkurs2/index.htm

THE SHARK[/code]

Blitzprogger

BeitragFr, März 07, 2008 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich progge an einem Textadventure und ewnn ich da mit dem Text unten angelangt bin sollte man rauf und runterscrollen können oder zumindest immer den unteren Teil sehen. Der Rest is klar. Laughing

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

The_Nici

BeitragFr, März 07, 2008 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
The_Nici hat Folgendes geschrieben:
Hatte mal einen Textscrollingcode gemacht, der Dateien auslesen konnte, jedoch ohne Zeilenumbruch.

Code:
Code: [AUSKLAPPEN]

Graphics 640,480,0,2
SetBuffer BackBuffer()
Dim Textarray$(1000)
Datei=ReadFile("blubb.txt")
i=1
readed$=""
Repeat
   readed$=ReadLine(Datei)
   Textarray(i)=readed$   ;Text der Datei auslesen
   i=i+1
   If Eof(Datei) Then Exit
Forever
Textarray(i-1)=""
CloseFile(Datei)
scrolled%=1
zeilen%=0
While Not KeyDown(1)
   zeilen=0   ;Die gemalten Zeilen wieder auf 0 setzen.
   scrolled=scrolled-MouseZSpeed()   
   If scrolled<1 Then scrolled=1
   maxscroll=scrolled*53   ;Bis zum Bildschirmrand
   While maxscroll>1000
      maxscroll=maxscroll-1   ;Darauf achten, dass man nicht aus dem Array gelangt!
   Wend
   For i=scrolled To maxscroll
      zeilen=zeilen+1      ;Gemalter Zeilenwert.
      Text 0,zeilen*12,Textarray(i)   ;Malen
   Next
   Text 400,0,scrolled
   Flip
   Cls
Wend




Ehm, wie gesagt?

Blitzprogger

BeitragFr, März 07, 2008 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohh ja, stimmt ja. Dumm von mir. Embarassed

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group