ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Text "schreibend" erscheinen lassen
BeitragVerfasst: 30 Sep 2016, 13:50 
Offline
Nuby

Registriert: 30 Sep 2016, 13:41
Beiträge: 2
Hi,
wollte fragen ob es irgendeinen Befehl gibt, um den Text "geschrieben" aufploppen zu lassen, anstatt die ganze Zeile einfach erscheinen zu lassen. Dmait meine ich was simpleres als


1
2
3
4
5
6
7
8
9
10
11
print "I"
sleep (0.1)
print "c"
sleep (0.1)
print "h "
sleep (0.1)
print "w"
sleep (0.1)
print "a"
sleep (0.1)
print "r "

Danke schonmal :D


Zuletzt geändert von NobbZ am 30 Sep 2016, 14:22, insgesamt 1-mal geändert.
code-tags ergänzt


Nach oben
 Profil  
 
BeitragVerfasst: 30 Sep 2016, 14:21 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Meines wissens gibt es da nichts fertiges. Texte wollen angezeigt und gelesen werden. Man will nicht darauf warten. Mach das mal mit einer Bildschirmseite voll Text (80 * 25 im klassischen Terminal). Wenn man da auf jedes Zeichen 0,1 Sekunden warten muss, dann dauert es 200 Sekunden, also über 3 Minuten bis der Bildschirm voll ist. In der Zeit hätte man den Text häufig 2 bis 4 mal lesen können‌!

Aber falls du diese Funktion wirklich benötigst hält dich niemand auf, diese selber zu schreiben. String#chars und Enumerator#each dürften dir bei dem Vorhaben helfen.

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
BeitragVerfasst: 30 Sep 2016, 20:20 
Offline
Lehrling
Benutzeravatar

Registriert: 21 Sep 2016, 19:20
Beiträge: 57
Ja mit dieser selbst geschriebenen Methode:



1
2
3
4
5
6
7
8
9
10
11
12
13
def slowText(text, speed)
part = 0
loop do
sleep speed
print text[part]
part += 1
if part==text.length
break
end
end
end

slowText("Ich bin ein langsamer String", 0.1)


Ich weiß diese Methode ist wahrscheinlich noch sehr verbesserungswürdig.


Nach oben
 Profil  
 
BeitragVerfasst: 01 Okt 2016, 21:34 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
Ruby ist doch nicht C. Wofür gibt es Iteratoren?



1
2
3
4
5
6
7
8
def slowtext(str, delay)
str.chars.each do |ch|
sleep(delay)
print(ch)
end
end

slowtext("foo", 0.1)


Kurz und knackig. Ob das sinnvoll ist oder nicht hängt vom Kontext ab, und es mag durchaus vorkommen, dass es eine sinnvolle Verwendung dafür gibt, die sich nicht sogleich erschließt. Pauschal in Abrede stellen möchte ich das nicht. So kann es etwa im Rahmen eines Text-Adventures sinnvoll sein, wenn die letzten Worte eines sterbenden Charakters dargestellt werden sollen.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
BeitragVerfasst: 02 Okt 2016, 11:43 
Offline
Lehrling
Benutzeravatar

Registriert: 21 Sep 2016, 19:20
Beiträge: 57
Also ich habe diese Iteratoren immer noch nicht ganz verstanden aber ich denke sie sind in vielen Fällen ganz hilfreich.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: