[Info]
Aktuelle Zeit: Do 22. Feb 2018, 05:30

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
BeitragVerfasst: Di 24. Jun 2014, 20:11 
Offline
Epic Spam Warrior
Benutzeravatar

Registriert: Di 13. Jul 2010, 22:46
Beiträge: 3230

Spezialgebiet: CW SSTCs
Schule/Uni/Arbeit: Physikstudium
Hallo, ich melde mich mal wieder, um meinen Fortschritt zu bekunden :D

Letzte Aufgabe (und damit die letzte des Semesters) war, ein 8*8 "Spielfeld" in einem 2D-Array zu erstellen, mit 0en zu füllen, nur links oben ne 1.
Mit w/a/s/d sollte man die 1 umherbewegen können, x beendet das Programm, Fehleingabe bringt eine Fehlermeldung.

Das Ganze sollte auf mehrere .c Dateien aufgeteilt werden, und per Makefile kompiliert.

Ich habe das Zeug nun etwas verändert (X an Stelle der 1, . an Stelle der 0, clearen des Bildschirms bei jedem neuen printen des Spielfelds), was nicht gefragt gewesen war, aber das sind Kleinigkeiten.
Habe zudem für die Größe des Felds sowie die beiden darzustellenden Zeichen in der Header Datei definierte Platzhalter genommen, man kann diese also mit Ändern eines Wertes schnell umändern - Will wer ein 100*100 Feld? :P

Was ich mich frage - geht das Zeug mit C auch kürzer? Ich meine, das wären, alles in einer Datei zusammengebracht, wohl immer noch gute 150 Zeilen Code. Im Anhang der ganze Projektordner, vielleicht hat jemand Lust, sich das mal anzuschauen, und zu sagen, wo ich noch eleganter arbeiten könnte.
War mit Kommentaren sehr freizügig, es sollte also recht gut verständlich sein.

Kompilierte Files sind keine dabei, würden bei euch (kompiliert auf nem Mac) wohl eh kaum laufen.
Da das Makefile da ist, sollte es aber unter Linux sehr einfach sein, das mal eben zu kompilieren (kp unter Windows).

Wie gesagt, falls jemand etwas Zeit über hat, ich würde mich über jeden Tipp freuen :)


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
"A condition where insufficient dead time exists is a destructive condition."
Texas Instruments, TL494 Appnote, Kapitel 4.4.2

Du hast einen starken Rechner, brauchst ihn aber nicht immer? Du willst was Gutes tun? Dann falte mit uns!
Bild


Share on FacebookShare on Google+Share on Reddit
Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 24. Jun 2014, 21:00 
Offline

Registriert: Mo 7. Feb 2011, 23:24
Beiträge: 2349
Wohnort: Aachen

Schule/Uni/Arbeit: Student/Elektrotechnik
Du kannst die Move-Funktion ein bisschen verkürzen, der Rest ist nicht viel zu kürzen

Code:
void move(char *pos, int x, int y)
{
    int oldX, oldY;
    // Position finden
    for(int i = 0; i < groesse; i++)
    {
         for(int j = 0; j < groesse; j++)
         {
             if(*(pos+i*groesse+j)==cursor)
             {
                  oldX = i;
                  oldY = j;
             }
         }
    }

    // Grenzen prüfen
    if((0<=(oldX+x))&&(0<=(oldY+y))&&(groesse>(oldX+x))&&(groesse>(oldY+y)))
    {
         *(pos+oldX*groesse+oldY)=leer;
         *(pos+(oldX+x)*groesse+oldY+y)=cursor;  // Und Werte setzen
    } else {
       //Falls das nicht klappt.
    }
}


So hast du 4 Funktionen in einer zusammengefasst. Mit [-1; 0; 1] kannst du die Richtungen angeben.
Ich hoffe da ist kein Fehler drin^^


Share on FacebookShare on Google+Share on Reddit
Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


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.

Gehe zu:  
cron



Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de

moShBox © 2008, 2009, 2010 mosfetkiller-Community