Forum: Typewriter Effect

Forum huvudsida -> Programmering -> Typewriter Effect

Sidor: 1

Till botten

thenicelordj 01:32 - 20:e December 2008 | Post #1
Medlem
Inlägg: 2


Skicka PM
Hej, jag behöver hjälp med att göra en liknande "skrivare" effekt alltså den skriver ut en bokstav var 100 millisekund. Här är koden
  1. #include <iostream>
  2. #include <string>
  3. #include "windows.h"
  4. using std::string;
  5. using std::cin;
  6. using std::cout;
  7. int main(){
  8. system("color 0a");
  9. string text;
  10. text = "Hello... Welcome to the matrix..";
  11. for(int a=0;int a=text;a++){
  12. Sleep(100);
  13. cout << text[a];
  14. }
  15. }

Det jag försökt göra är så att den skriver ut en bokstav i taget från strängen text.. Det funkar dock inte utan den skriver ut bokstaven "w" hela tiden. Kan någon hjälpa mig eller någon som vet ett enklare sätt att göra? Vill ha hela spelet i sån här effekt, ska jag lägga all text i strängen då? Hoppas ni förstårSmiley

NVM, fixade det.


Senast redigerad 01:49 - 20:e December 2008


achnorr 14:58 - 21:a December 2008 | Post #2
Medlem
Inlägg: 82


Skicka PM
just som jag fixat det......
  1. #include <iostream>
  2. #include "windows.h"
  3.  
  4. using namespace std;
  5.  
  6. void text(string medelande)
  7. {
  8.  
  9. for(int a=0; a <= medelande.length(); a++)
  10. {
  11.  
  12. Sleep(100);
  13. cout << medelande[a];
  14. }
  15. }
  16. int main()
  17. {
  18.  
  19. system("color 0a");
  20.  
  21. text("Hello... Welcome to the matrix..\n");
  22.  
  23. cin.get();
  24. cin.get();
  25.  
  26.  
  27.  
  28. return 0;
  29. }


-------------------------
Ohhoo*



Slash 16:17 - 21:a December 2008 | Post #3
Medlem
Inlägg: 141


Skicka PM
Rad 9 bör vara:
  1. for(int a = 0; a < medelande.length(); a++)


Annars går du utanför strängen (tänk på att den är noll-indexerad!).

-------------------------
Ingen sigantur!



Tesuki 08:54 - 22:a December 2008 | Post #4
Medlem
Inlägg: 122


Skicka PM
eftersom ingen annan säger vad du gör fel.

for(int a=0;int a=text;a++)

där är ett väldigt stort fel. och kompilatorn borda klaga mycket och högt

nu varje varv i din loop sätter du int:en a till värdet av texten. vilket blir jätte fel. och du alokerar minne för en hela tiden ocksa (tror jag)
vad du borde gjort är:

for(int a=0; a == text.length(); a++)

detta skulle fortfarande vara fel. notera inlägg av slash.


Senast redigerad 08:55 - 22:a December 2008


thenicelordj 18:18 - 22:a December 2008 | Post #5
Medlem
Inlägg: 2


Skicka PM
Jag gjorde så här, jag undrar om det finns nåt lättare sätt än att omdefiniera text variablen och gå till funktionen varje gång.
  1. #include <iostream>
  2. #include <ctime>
  3. #include <stdlib.h>
  4. #include <string>
  5. #include "windows.h"
  6. using std::string;
  7. using std::cin;
  8. using std::cout;
  9. string text;
  10. void message();
  11. int main(){
  12. int age;
  13. int compage = age+10;
  14. string cage;
  15. string name;
  16. system("color 0a");
  17. text="Hello... What's your name? =)\n\n";
  18. message();
  19. cin >> name;
  20. text=name+".. My name is Jayson, but you can call me J\n\n";
  21. message();
  22. text="Can I call you n00b?\n\n...\n\nOkey then, n00b.\n\n";
  23. Sleep(2000);
  24. message();
  25. text="How old are you "+name+" the n00b? :P\n\n";
  26. message();
  27. cin >> age;
  28. itoa(compage, cage);
  29. text="rofl.. I'm "+cage+"...\n\n";
  30. message();
  31. cin.get();
  32.  
  33. }
  34. void message(){
  35. int delay;
  36. for(int a=0;a<text.size();a++){
  37. delay = rand()%200+10;
  38. Sleep(delay);
  39. cout << text[a];
  40. }
  41. }



Senast redigerad 18:20 - 22:a December 2008


NetNinja 21:24 - 11:a Februari 2009 | Post #6
Medlem
Inlägg: 116


Skicka PM
Kan ta och kommentera din kod lite.

du skapar age och sen skapar du compage och sätter den till age + 10 vilket kan ge helt random resultat då age inte är satt till något.

Du har också string text som global, på ett program på denna skalan gör det inget men det är god praxis att inte ha några som helst globala variabler. Speciellt i C++ då själva meningen med OOP är att kapsla in data (isolering). ,,ven om du inte håller på med OO så tänk på att globala variabler är till för test variabler och extrema nödfal och helst inte ens då.

En omgjord version av din kod:

  1. #include <iostream>
  2. #include <ctime>
  3. #include <stdlib.h>
  4. #include <string>
  5. #include "windows.h"
  6.  
  7. using std::string;
  8. using std::cin;
  9. using std::cout;
  10.  
  11. void message(string text);
  12.  
  13. int main()
  14. {
  15. int age;
  16. int compage;
  17. string cage;
  18. string name;
  19.  
  20. system("color 0a");
  21.  
  22. message(string("Hello... What's your name? =)\n\n"));
  23.  
  24. cin >> name;
  25. message(string(name+".. My name is Jayson, but you can call me J\n\n"));
  26.  
  27. Sleep(2000);
  28. message(string("Can I call you n00b?\n\n...\n\nOkey then, n00b.\n\n"));
  29.  
  30. message(string("How old are you "+name+" the n00b? :P\n\n"));
  31.  
  32. cin >> age;
  33. compage = age + 10;
  34. itoa(compage, cage);
  35. message(string("rofl.. i'm "+cage+"...\n\n"));
  36.  
  37. cin.get();
  38. return 0;
  39. }
  40.  
  41. void message(string text)
  42. {
  43. int delay;
  44. for(int a=0;a<text.size();a++){
  45. delay = rand()%200+10;
  46. Sleep(delay);
  47. cout << text[a];
  48. }
  49. }


Det som händer med message är att jag kör konstruktorn för string vilket skapar en version utav string med det som står innanför paranteserna. Detta funkar inte för alla typer utav data strukturer, de måste ha en konstruktor som stödjer det man försöker göra.

-------------------------



Senast redigerad 21:35 - 11:a Februari 2009


Sidor: 1

Forum huvudsida -> Programmering -> Typewriter Effect
Atom feed

Du får inte posta i den här tråden | Till toppen