Mein lieblingsthema Structuren -.- :)



  • Grüß euch!
    Ich habe mal wieder in der Schule etwas neues gelernt, da kennt sich eigentlich keiner so richtig aus: structuren.
    Hier ist ein Programmteil von meinen Pacman - Game.

    Die Initialisierung von den Ganzen Structuren:

    sonstigesT sonstiges = { 1, 'y', 'y' };
    spielT spiel = {3,{
    		 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
    		,{1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1}
    		,{1,2,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,2,1}
    		,{1,2,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,2,1}
    		,{1,2,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,2,1}
    		,{1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}
    		,{1,2,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,2,1}
    		,{1,2,2,2,2,2,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,2,2,2,2,2,2,1}
    		,{1,1,1,1,1,1,2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,2,1,1,1,0,0,1,1,1,2,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,2,1,0,0,0,0,0,0,1,2,1,1,2,1,1,1,1,1,1}
    		,{3,0,0,0,0,0,2,2,2,2,1,0,0,0,0,0,0,1,2,2,2,2,0,0,0,0,0,4}
    		,{1,1,1,1,1,1,2,1,1,2,1,0,0,0,0,0,0,1,2,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1}
    		,{1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1}
    		,{1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1}
    		,{1,2,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,2,1}
    		,{1,2,1,1,1,1,2,1,1,1,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,2,1}
    		,{1,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,1}
    		,{1,1,1,2,1,1,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,2,1,1,2,1,1,1}
    		,{1,1,1,2,1,1,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,2,1,1,2,1,1,1}
    		,{1,2,2,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,2,2,1}
    		,{1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1}
    		,{1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1}
    		,{1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}
    		,{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}},{3,0,{17,23},},};
    

    Mir wird der Fehler: excess elements in scalar initializer in der letzten Zeile angezeigt, ich weiß nicht was es bedeutet 🙂
    Noch ein Fehler (programmausschnitt):

    void game(sonstigesPtT sonstiges, spielPtT spiel) {
    	time(&sonstiges->beginn);
    	//todo spielfeld ausgeben
    	clrscr();
    	int i;
    		int j;
    		for (i = 0; i < ZEILEN; ++i) {
    			for (j = 0; j < SPALTEN; ++j) {
    				switch (spiel->spielFeld[i][j]) {
    					case 1:
    						setColor(TF_BLUE,TB_BLUE);
    						printf(" ");
    						break;
    					case 2:
    						setColor(TF_YELLOW,TB_BLACK);
    						printf("*");
    						break;
    					case 0:
    						setColor(TF_WHITE,TB_BLACK);
    						printf(" ");
    						break;
    					case 3:
    						setColor(TF_CYAN,TF_CYAN);
    						printf(" ");
    						break;
    					default:
    						break;
    				}
    				setColor(TF_WHITE,TB_BLACK);
    			}
    			if (i < ZEILEN - 1)
    			printf("\n");
    		}
    	//todo steuerung
    		sonstiges->run = 0;
    		while (sonstiges->run == 0) {
    			if (kbhit()) {
    				sonstiges->input = getch();
    				switch (sonstiges->input) {
    					case 'w':
    						spiel->pacman.coord.zeile--; //request for member ‘zeile’ in something not a structure or union
    						break;
    					case 's':
    						spiel->pacman.coord.zeile++; //request for member ‘zeile’ in something not a structure or union
    						break;
    					case 'a':
    						spiel->pacman.coord.spalte--; //request for member ‘zeile’ in something not a structure or union
    						break;
    					case 'd':
    						spiel->pacman.coord.spalte++; //request for member ‘zeile’ in something not a structure or union
    						break;
    					default:
    						break;
    				}
    			}
    		}
    	//todo automatische steuerung (wenn nichts gedrückt)
    	//todo kollisionen
    	//todo geister
    	time(&sonstiges->finish);
    	//difftime
    }
    

    Jetzt will ich fragen, warum der Compiler mir das ausspuckt 🙂

    Hier meine .h Datei:

    /*
     * pacman_header.h
     *
     *  Created on: 08.10.2012
     *      Author: weini
     */
    
    #ifndef PACMAN_HEADER_H_
    #define PACMAN_HEADER_H_
    
    #include "consoleio.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    #define ZEILEN 31
    #define SPALTEN 28
    
    typedef struct coord {
    	unsigned zeile;
    	unsigned spalte;
    }coordT, *coordPtT;
    
    typedef struct pacman {
    	unsigned leben;
    	unsigned punkte;
    	coordPtT coord;
    }pacmanT, *pacmanPtT;
    
    typedef struct spiel {
    	unsigned lvl;
    	unsigned spielFeld[50][90];
    	pacmanT pacman;
    }spielT, *spielPtT;
    
    typedef struct sonstiges {
    	unsigned cur;
    	char input;
    	char nextInput;
    	time_t beginn;
    	time_t finish;
    	unsigned run;
    }sonstigesT, *sonstigesPtT;
    
    int menu(sonstigesPtT sonstiges);
    void game(sonstigesPtT sonstiges, spielPtT spiel);
    
    #endif /* PACMAN_HEADER_H_ */
    

    Vielen Dank schon im Voraus 🙂

    weini


  • Mod

    Erster Fehler: Was sollen da diese einsamen Kommas in der letzten Zeile?
    Zweiter Fehler: pacmanT::coord ist bei dir ja auch vom Typ struct coord* (typedefed auf coordPtT) und somit ein Zeigertyp. Du meintest dort wohl eher coordT.



  • 1. Die brauche ich, damit ich nicht vergesse was noch zum tuen ist (ist ja ein todo) 🙂
    2. Danke Danke Danke Danke 🙂 Ich bin wieder einmal zu blöd gewesen, das ich diesen Fehler gefunden habe 🙂


  • Mod

    weini37 schrieb:

    1. Die brauche ich, damit ich nicht vergesse was noch zum tuen ist (ist ja ein todo) 🙂

    Du kannst doch nicht einfach irgendwelche Zeichen mit syntaktischer Bedeutung mitten in dein Programm setzen!



  • Welche Bedeutung haben die denn in diesem Fall? 😕



  • koma-comma schrieb:

    Welche Bedeutung haben die denn in diesem Fall? 😕

    Compile-error.
    😃


  • Mod

    CJosef schrieb:

    koma-comma schrieb:

    Welche Bedeutung haben die denn in diesem Fall? 😕

    Compile-error.
    😃

    wieso? Kommas am Ende der Initialisierungsliste sind zulässig.



  • camper schrieb:

    CJosef schrieb:

    koma-comma schrieb:

    Welche Bedeutung haben die denn in diesem Fall? 😕

    Compile-error.
    😃

    wieso? Kommas am Ende der Initialisierungsliste sind zulässig.

    Wieso? Weil es zu viele Initialisierungen sind.


  • Mod

    Der oben genannte zweite Fehler war tatsächlich auch der erste Fehler, da der fälschlich benutzte Pointer mit den Daten des Structs initialisiert wurde.


Log in to reply