mein eigenes bouncing ball programm



  • hallo,
    vor einigen tagen habe ich hier ein sehr schlechtes beispiel von ein bouncing ball programm geposted.
    ich habe jetzt mein eigenes programm geschrieben und würde gerne wissen ob ich schwerwigende stil fehler gemacht habe ?
    btw gibt es eine möglichekit den source code in VS2010 zu formatieren ? ;/

    #include <iostream>
    #include <vector>
    #include <string>
    #include <stdlib.h>
    
    using namespace std;
    
    void bounce(int &start, int &end)
    {   
    	static int cnt =0;
    	string toright, toleft;
    	while (true) // endless
    	{	
    	for(; start!=end; ++start)		
    	{
    		system("cls");
    
    			for (size_t sz=0; sz!=cnt;++sz)   // newline
    			{
    				cout << "\n";
    			}
    
    			++cnt;
    			for (size_t sz = 0; sz!=start; ++sz)
    			{
    				toright += ' '; // space from left to right
    			}
    			cout << toright<<"O";
    			toright ="";
    			}
    
    	for(; start!=0; --start)		
    	{
    		system("cls");
    
    			for (size_t sz=0; sz!=cnt;++sz)   // newline
    			{
    				cout << "\n";
    			}
    			++cnt;
    			if (start !=0)
    			{
    			for (size_t sz =0; sz!=start; ++sz)
    			{
    				toleft += ' '; // space from right to left
    			}
    			cout << toleft<<"O";
    			}
    			else
    			{
    				cout << "O";
    			}
    			toleft ="";
    
    	}
    
    }
    }
    
    int main()
    {   
       int a=0, b=15;
       bounce(a,b);
    }
    


  • Erstmal solltest du sagen was die Funkttion überhaupt machen soll. Was mir spontan ins Auge fällt:
    -#include <vector> Wozu?
    -#include <string> Wozu?
    -Auflösung des std-Namenraums (kein Fehler, kann jedoch gefährlich werden).
    -static int cnt =0; Eine statische Variable innerhalb einer Funktion ist nicht notwendig. Was wolltest du damit bezwecken?
    -while (true) Warum eine Endlosschleife? In den meisten Fällen ist eine solche nur ein Indikator schlechten Designs.
    -system("cls"); Umstrittene Art und Weise den Konsolenoutput zu terminieren. Da es mir scheint als wolltest du ein Spiel programmieren, würde ich dir eher zu "Reading Input Buffer Events" raten. Einen Einstieg solltest du hier finden:
    http://msdn.microsoft.com/en-us/library/ms685035(v=vs.85).aspx

    Ansonsten fällt mir so nichts auf. Logik/Mathematik habe ich nicht berücksichtigt, da ich nicht ahne was der Code machen soll.

    Gute Nacht.



  • Kóyaánasqatsi schrieb:

    -#include <string> Wozu?

    Für Zeile 11? :p

    @TE
    int's kannst du ruhig einfach so übergeben, Referenzen sind da eher unüblich. Es gibt zwei Gründe für Referenzen: 1. Man will Speicher sparen (dann mit const TYP& variable) 2. Man will den Wert der übegebenen Variablen auch außerhalb der Funktion ändern. Beides trifft bei dir nicht zu. (sizeof(void*) << sizeof(int) schließe ich mal aus.)



  • kantaki schrieb:

    btw gibt es eine möglichekit den source code in VS2010 zu formatieren ? ;/

    Strg+A Alt+F8



  • oder Strg + K + F
    und halt vorher alles markieren



  • cooky451 schrieb:

    Kóyaánasqatsi schrieb:

    -#include <string> Wozu?

    Für Zeile 11? :p

    @TE
    int's kannst du ruhig einfach so übergeben, Referenzen sind da eher unüblich. Es gibt zwei Gründe für Referenzen: 1. Man will Speicher sparen (dann mit const TYP& variable) 2. Man will den Wert der übegebenen Variablen auch außerhalb der Funktion ändern. Beides trifft bei dir nicht zu. (sizeof(void*) << sizeof(int) schließe ich mal aus.)

    hey danke, ich hab das programm um 2 uhr morgens geschrieben, ich weiß garnicht warum ich referenzen benutzt habe, gibt irgentwie auch keinen sinn :p

    @ first post :
    ich hab mir ein template geschrieben das alle #includes beinhaltet die ich städnig brauche, bin zu faul immer alles neu zuschreiben.

    sehr schön alt+f8 spart ne menge zeit 🙂


Anmelden zum Antworten