Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Azasel

unregistriert

1

31.03.2017, 20:55

[ANSI-C]Was mache ich falsch?

Ich bin gerade dabei mein erstes kleines Programm in C zu schreiben.
Der Code ist erstmal einfach so hingekotzt und ich weiss, es gibt 100 bessere Alternativen.
Der Compiler zeigt mir ein bestimmten Fehler an.
Könnte mir jemand erklären, wieso das nicht geht.
So wie ich es verstanden habe, sollen im Speicher 10 Bytes reserviert werden um ein String speichern zu können(Siehe Code).
Nach dem Switch sollen dann die Werte in der Adresse vom Char abgelegt werden.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>

  int main(void){

  int hp = 100;
  int dmg = 20;
  int enemyHp = 0;
  int enemyDmg = 0;
  char enemyName[10];
  short enemy = 0;
  short alive = 1;
  int run = 1;
  int r;
  char opt = ' ';

  while(run){
  alive = 1;
  r = rand() % 2;
  switch(enemy){
//Compiler Error: Assignment to expression with Array Type
  case 0: enemyName = "Creeper"; enemyHp = 40; enemyDmg = 10;
    break;
  case 1: enemyName = "Zombie"; enemyHp = 40; enemyDmg = 10;
      break;
  case 2: enemyName = "Skeleton"; enemyHp = 40; enemyDmg = 10;
  }
  while(alive){
    printf("%s angreifen?",enemyName);
    scanf("%c",&opt);
    if(opt == 'a'){
        enemyHp -= dmg;
        hp -= enemyDmg;}
    else break;

    if(enemyHp <= 0)
        alive = 0;
  }

  if(hp <= 0)
    run = 0;
  }
   return 0;
  }

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Azasel« (01.04.2017, 10:07)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

31.03.2017, 21:09

Ein Array aus 10 Chars ist eben kein String mit 6-8 Buchstaben.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Azasel

unregistriert

3

31.03.2017, 21:25

Ein Array aus 10 Chars ist eben kein String mit 6-8 Buchstaben.

mit

C-/C++-Quelltext

1
enemyName = {'N','a','m','e','\0'}

habe ich es auch bereits probiert, falls du das meinst!?

Ich habe schon viel zum Thema Strings gelesen, aber damit hatte ich noch nicht zu tun soweit ich weiss.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

31.03.2017, 22:00

Ein Array mit 6 Einträgen ist auch kein Array mit 10.
Was du suchst lautet 'strcpy'
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Azasel

unregistriert

5

01.04.2017, 10:48

Hab es hinbekommen, danke.
Kannst du mir noch sagen, wieso die random Funktion nicht funktioniert?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

01.04.2017, 11:35

Kannst du mir noch sagen, wieso die random Funktion nicht funktioniert?

Mach mal ein paar mehr Aufrufe um dir das Ergebnis anzusehen. Oder gib mal das Ergebnis ohne Modulo aus.
Dann kannst du vorher den Seed mit srand festlegen. Oft benutzt man hier die Systemzeit. Soweit ich das im Kopf hatte sollte das aber auch automatisch passieren falls du es nicht selbst machst. Zumindest kannst du danach mal googlen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

01.04.2017, 11:40

Hab es hinbekommen, danke.
Kannst du mir noch sagen, wieso die random Funktion nicht funktioniert?
Was heißt 'funktioniert nicht'? Bitte lern die Fehler korrekt zu beschreiben. Kennt der Compiler sie nicht, wirft sie Fehler, liefert sie nicht das, was du erwartest?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige