Lerne rot13 (war: Möchte 2d Spiele programmieren)

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Möchte 2d Spiele programmieren

Beitrag von Xin » Di Mär 08, 2011 10:02 am

lolliger hat geschrieben:Habs ausprobiert.Und es hat geklappt!!! :D
Und das besste ist: Ich habs verstanden!!! :D
Das nehme ich mal als positive Kritik ;-)

Ich schreibe das Tutorial gerade neu, bzw. überhaupt mal eine Step-By-Step-Anleitung. Den Grundlagen-Bereich kannst Du Dir ansehen und mir sagen, was Du davon hältst (insbesondere, wo es hakt, ich also ausbessern muss).
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Möchte 2d Spiele programmieren

Beitrag von lolliger » Di Mär 08, 2011 10:11 am

Also ich finde die Seite ist sehr übersichtlich gestaltet.
Ich finde mich super zurecht. ;)
Also habe ich "leider" keine Verbesserungsvorschläge für dich. :D

Habe Heute leider keine Zeit mehr, es wäre aber nett, wenn du mir schreiben könntest, was ich als nächstes für mein Programmierwissen tun kann. :|

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Möchte 2d Spiele programmieren

Beitrag von Xin » Di Mär 08, 2011 10:50 am

lolliger hat geschrieben:Also ich finde die Seite ist sehr übersichtlich gestaltet.
Ich finde mich super zurecht. ;)
Also habe ich "leider" keine Verbesserungsvorschläge für dich. :D
Vielen Dank :-)
lolliger hat geschrieben:Habe Heute leider keine Zeit mehr, es wäre aber nett, wenn du mir schreiben könntest, was ich als nächstes für mein Programmierwissen tun kann. :|
Damit wir in ein vergleichbares Vokabular kommen wäre es von Vorteil, wenn Du Dir den Rest der Grundlagen auch einfach mal durchliest (und mir dazu auch Feedback gibst)

Hast Du rot13 mal umgesetzt?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Möchte 2d Spiele programmieren

Beitrag von lolliger » Mi Mär 09, 2011 8:06 am

Xin hat geschrieben:Damit wir in ein vergleichbares Vokabular kommen wäre es von Vorteil, wenn Du Dir den Rest der Grundlagen auch einfach mal durchliest (und mir dazu auch Feedback gibst)
Ich habe mir dein Tutorial mal durchgelesen.
Das meiste kannte ich schon aus diesem Tutorial: http://www.tutorials.at/c/c-oder-cplusplus.html
Aber das Kapitel mit den Funktionen hat mir nochmal weitergeholfen. :)

Feedback:
Ich finde dein Tutorial ist sehr gut, da es übersichtlich ist und dazu noch super erklärt. ;)

Ein paar Verbesserungsvorschläge:
1. Ganz am Anfang wäre es für Neueunsteiger super, wenn du (einen) link(s) für Compiler angibst.
2. Am Ende eines Kapitels wäre es ebenfalls gut für Neueinsteiger, wenn du ein Beispielproblem angibst (natürlich mit Lösung), denn dann hätten sie eine Vorstellung, wie sie sich selbst Probleme stellen und üben könnten.
Sonst war alles SUPER!!! :D
Xin hat geschrieben:Hast Du rot13 mal umgesetzt?
Nein, wie denn??? :?:
Gibt es dazu irgendwelche Befehle in der C-Bibliothek???
Vieleicht kannst du mir mal ei Beispielprogramm zur Anwendung von Rot13 zeigen.
Das wäre echt super!!! :D

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Möchte 2d Spiele programmieren

Beitrag von Xin » Mi Mär 09, 2011 9:49 am

lolliger hat geschrieben:
Xin hat geschrieben:Damit wir in ein vergleichbares Vokabular kommen wäre es von Vorteil, wenn Du Dir den Rest der Grundlagen auch einfach mal durchliest (und mir dazu auch Feedback gibst)
Ich habe mir dein Tutorial mal durchgelesen.
Das meiste kannte ich schon aus diesem Tutorial: http://www.tutorials.at/c/c-oder-cplusplus.html
Aber das Kapitel mit den Funktionen hat mir nochmal weitergeholfen. :)
Na, das ist doch schonmal was :-)
Weiterhin solltest Du gemerkt haben, dass ich auf einigen Begriffen rumreite, um sie zu differenzieren und um ein Vokabular anzutrainieren.
lolliger hat geschrieben:Feedback:
Ich finde dein Tutorial ist sehr gut, da es übersichtlich ist und dazu noch super erklärt. ;)
Vielen Dank :-)
lolliger hat geschrieben:Ein paar Verbesserungsvorschläge:
1. Ganz am Anfang wäre es für Neueunsteiger super, wenn du (einen) link(s) für Compiler angibst.
Direkt der erste Satz:

"Ich gehe jetzt davon aus, dass euer Computer - egal, ob es ein Linuxsystem, ein Mac oder ein Windowsrechner ist - mit dem GCC Compiler ausgestattet ist."

Ich interpretiere die Kritik mal um und behaupte, dass die grünen Links nicht deutlich genug sind.
lolliger hat geschrieben:2. Am Ende eines Kapitels wäre es ebenfalls gut für Neueinsteiger, wenn du ein Beispielproblem angibst (natürlich mit Lösung), denn dann hätten sie eine Vorstellung, wie sie sich selbst Probleme stellen und üben könnten.
Sonst war alles SUPER!!! :D
Hmm... ich dachte, dass ich das in der Anleitung mache und sofern mir etwas passendes einfällt gebe ich eine Aufgabe in "Ziel der Lektion". Wer damit Probleme hat kann sich ja gerne im Forum melden.
Aber ich denke darüber nach, ob und wie ich das ergänzen kann.
lolliger hat geschrieben:
Xin hat geschrieben:Hast Du rot13 mal umgesetzt?
Nein, wie denn??? :?:
Gibt es dazu irgendwelche Befehle in der C-Bibliothek???
Vieleicht kannst du mir mal ei Beispielprogramm zur Anwendung von Rot13 zeigen.
Das wäre echt super!!! :D
Hehehe, wenn man programmieren lernt, dann ist ja nur ein Teil des Ziels, eine Programmiersprache zu lernen. Die andere Seite ist ja, dass man lernt, ein "deutsches" Problem als solches zu erkennen und zu verstehen, eine Problemlösung zu finden und die Lösung dann in der Programmiersprache zu formulieren. Es wäre echt überhaupt nicht super, wenn Du als Programmierer bei jedem echten Problem andere Programmierer fragen müsstest, weil Du dann ja nicht programmieren gelernt hättest. ^^

Du brauchst keine Befehle aus der C-Bibliothek - und dafür gibt es auch keine. Das ist ein Programmierproblem.

Dein Problem - rot13 ist in Wikipedia beschrieben. Einfache Verschlüsslung wird hier sicher auch bald kommen, weil ich so etwas gerne nutze, um den Leuten programmieren beizubringen (merkst Du es?), aber dort gibt es bereits die Beschreibung. Dein Job ist nun Dir zu überlegen, wie Du das in C formulieren könntest.
Viel Spaß :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Möchte 2d Spiele programmieren

Beitrag von lolliger » Mi Mär 09, 2011 11:35 am

Xin hat geschrieben:Hehehe, wenn man programmieren lernt, dann ist ja nur ein Teil des Ziels, eine Programmiersprache zu lernen. Die andere Seite ist ja, dass man lernt, ein "deutsches" Problem als solches zu erkennen und zu verstehen, eine Problemlösung zu finden und die Lösung dann in der Programmiersprache zu formulieren. Es wäre echt überhaupt nicht super, wenn Du als Programmierer bei jedem echten Problem andere Programmierer fragen müsstest, weil Du dann ja nicht programmieren gelernt hättest. ^^

Du brauchst keine Befehle aus der C-Bibliothek - und dafür gibt es auch keine. Das ist ein Programmierproblem.

Dein Problem - rot13 ist in Wikipedia beschrieben. Einfache Verschlüsslung wird hier sicher auch bald kommen, weil ich so etwas gerne nutze, um den Leuten programmieren beizubringen (merkst Du es?), aber dort gibt es bereits die Beschreibung. Dein Job ist nun Dir zu überlegen, wie Du das in C formulieren könntest.
Ich hab Rot13 in C formuliert:

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char rot13 (int i,int a,char txt[300],char Text [i])
{

    for (i=0;i<=a;i++)
    {
       if (Text[i]=='a')
       Text[i]='n';

       else if (Text[i]=='b')
       Text[i]='o';

       else if (Text[i]=='c')
       Text[i]='p';

       else if (Text[i]=='d')
       Text[i]='q';

       else if (Text[i]=='e')
       Text[i]='r';

       else if (Text[i]=='f')
       Text[i]='s';

       else if (Text[i]=='g')
       Text[i]='t';

       else if (Text[i]=='h')
       Text[i]='u';

       else if (Text[i]=='i')
       Text[i]='v';

       else if (Text[i]=='j')
       Text[i]='w';

       else if (Text[i]=='k')
       Text[i]='x';

       else if (Text[i]=='l')
       Text[i]='y';

       else if (Text[i]=='m')
       Text[i]='z';

       else if (Text[i]=='n')
       Text[i]='a';

       else if (Text[i]=='o')
       Text[i]='b';

       else if (Text[i]=='p')
       Text[i]='c';

       else if (Text[i]=='q')
       Text[i]='d';

       else if (Text[i]=='r')
       Text[i]='e';

       else if (Text[i]=='s')
       Text[i]='f';

       else if (Text[i]=='t')
       Text[i]='g';

       else if (Text[i]=='u')
       Text[i]='h';

       else if (Text[i]=='v')
       Text[i]='i';

       else if (Text[i]=='w')
       Text[i]='j';

       else if (Text[i]=='x')
       Text[i]='k';

       else if (Text[i]=='y')
       Text[i]='l';

       else if (Text[i]=='z')
       Text[i]='m';

   }
}


int main()
{
    int i, a;
    char txt[300];


   printf("Bitte einen Text eingeben (nur Kleinbuchstaben):\n");
   fgets(txt,300,stdin);

   a=strlen(txt);

   char Text[a];

   strncpy(Text,txt,a+1);


   rot13(i,a,txt,Text);


   printf("\nCodierter Text:\n%s\n",Text);

   rot13(i,a,txt,Text);
   printf("\nDekodierter Text:\n%s\n",Text);



  return 0;
}
Wie findest du es???

Ich hät noch Großbuchstaben hinzufügen können, aber das Wichtigste ist ja: Ich habs formuliert und sogar eine Funktion benutzt. :D

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Möchte 2d Spiele programmieren

Beitrag von Xin » Mi Mär 09, 2011 12:04 pm

lolliger hat geschrieben:Wie findest du es???
Soweit ganz gut, denn Du hast Dein Problem gelöst. (Ich habe es nicht getestet, aber der Lösungsweg ist ja ersichtlich und ich gehe mal davon aus, dass Du es getestet hast. ^^).
lolliger hat geschrieben:Ich hät noch Großbuchstaben hinzufügen können, aber das Wichtigste ist ja: Ich habs formuliert und sogar eine Funktion benutzt. :D
Warum hast Du keine Großbuchstaben hinzugefügt? Lass mich raten... es artet in Arbeit aus.

Das Programm zeigt Deinen derzeitigen Stand beim Erlernen von C sehr schön. Du kannst ein Problem lösen - das ist schon sehr gut - aber Du schreibst einen Roman dafür. Das ist nicht verwunderlich, denn vor ein paar Stunden wolltest Du noch eine Lösung vorgekaut haben. Du bist also jetzt einen Schritt weiter.

Wenn ich einen Text "zzzzz" verschlüssel will müssen 135 if-Abfragen geleistet werden. Wenn Du die großen Buchstaben hinzufügst, werden 135 Abfragen der Mittelwert, um einen Text von 5 beliebigen Zeichen zu kodieren. Viel Aufwand für einen kleinen Algorithmus.

Also - nächste Übung: Versuch aus dem Roman ein Gedicht zu machen. Das heißt gleicher (oder sogar mehr) Inhalt, aber weniger Text.
Kürzen!

Ich gebe Dir aber noch einen Tip mit: Ausdrücke. Lies das und danach lies Dir nochmal den Bereich 'atomare Ausdrücke' durch und versuche das kreativ zu nutzen.

Noch ein Tipp: Ein Gedicht begeistert durch Versmaß und Form. Form: Korrekt bzw. nach Funktion einrücken!
Versmaß: Was ist 'a'? 'a' wie Length, steckt ja quasi im Wort...oder so!? Wäre 'a' ein 'l', wäre das einfacher. Wäre 'a' 'length' wäre es sogar eindeutig. 'l' reicht. Hinter 'a' erwartet man eher einen Fließkommawert. f(x) = a * x^2 + b * x + c
Logisch, Polynome kennt wohl jeder in der Mathematik. Solche Regeln gibt es auch beim Programmieren.
Kennst Du den alten Fortranspruch "god is real until declared integer"? - alle Variablen, die mit a-h anfingen waren implizit Fließkommazahlen (reals), dann kam der Block mit impliziten Integer-Variablen. Wenn man es anders haben wollte, musste man den Typ der Variablen explizit deklarieren. Implizite Variablendeklarationen gibt es in C zum Glück nicht mehr, aber die Art und Weise, Variablen zu verwenden ist gerade für einstellige Variablennamen geblieben.

Wo ist der Unterschied zwischen Text und txt? Und warum gibt's ihn überhaupt zweimal?
Da stolpert man drüber, man verhaspelt sich beim lesen.
Code ist dann schön, wenn man ihn wie ein Gedicht lesen kann und wenn die optische Form hilft auf seine Funktion zu schließen.

Das, würde ich sagen, kann Deine nächste Übung darstellen. rot13 auf einer Bildschirmseite mit möglichst wenig if-Abfragen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Möchte 2d Spiele programmieren

Beitrag von Dirty Oerti » Mi Mär 09, 2011 12:59 pm

Ich gebe noch einen Hinweis (ich hoffe ich verrate nicht zu viel ;) ) :

Du hast aufgeschrieben, dass aus 'a' ein 'n' wird etc.
Du hast also für jedes Zeichen angegeben, welches Zeichen anstatt diesem steht.
Woher wusstest du das denn? Intuition? :-P
Gib doch lieber an, wie man herausfindet, welches Zeichen für ein anderes zu stehen hat.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Möchte 2d Spiele programmieren

Beitrag von lolliger » Do Mär 10, 2011 8:44 am

Habe jetzt schon Stundenlang versucht den Quellcode zu kürzen, indem ich das Problem mithilfe der ASCII-Werte löse. :x
Ich kriege es einfach nicht hin aus dem eingegebenen Text die jeweiligen ASCII-Werte zu lesen, diese nach rot13 zu ändern und sie dann wieder als Text auszugeben!!! :cry:
Geht das überhaupt?

Kann mir jemand helfen???

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Möchte 2d Spiele programmieren

Beitrag von Xin » Do Mär 10, 2011 9:22 am

lolliger hat geschrieben:Habe jetzt schon Stundenlang versucht den Quellcode zu kürzen, indem ich das Problem mithilfe der ASCII-Werte löse. :x
Ich kriege es einfach nicht hin aus dem eingegebenen Text die jeweiligen ASCII-Werte zu lesen, diese nach rot13 zu ändern und sie dann wieder als Text auszugeben!!! :cry:
Geht das überhaupt?
Du arbeitest mit einem Computer. Alles - und zwar absolut alles - sind Zahlenwerte - auch Buchstaben.

Code: Alles auswählen

char asciiwert = Text[i];

printf( "Der ASCII-Wert von %c ist %d\n", asciiwert, asciiwert );

if( asciiwert >= 'a' && asciiwert <= 'z' ) 
  printf( "Dieser ASCII-Wert ist ein kleiner Buchstabe.\n" );
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten