2015-12-30 31 views
1

我正在尝试制作一个程序,它将给定数量的玩家放入给定数量的团队中。之后,他们应该随机选择(例如,你掷出“骰子”和第3队的选手42并与第4队的选手22进行战斗(所有队员都被随机放入不同的队伍中,这些队伍仅限于选择Gamemaster) )。团队和扑灭随机数在C

在我的代码中我有基本的输出和结构。它说是这样的:

1队现在拥有球员43 2队现在拥有球员12 队4现在拥有球员1 队3比现在拥有球员54

但我的问题是,如何 - 基础上代码 - 我可以保存这些信息,我如何(随后)让玩家随机战斗?同一队的成员不应该能够互相对抗,每场比赛之后,我希望球员能够以某种方式在“黑名单”上不能再滚动。

到目前为止我的代码

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

int main() 
{ 
    int mitglieder, teams, teameins = 0, teamzwei = 0, teamdrei = 0, teamvier = 0; 

    printf("Teamcreation\n"); 
    printf("\nNumber of Players: "); 
    scanf("%d", &mitglieder); 
    printf("\nNumber of Teams: "); 
    scanf("%d", &teams); 
    printf("\nThere are "); 
    printf("%d", mitglieder); 
    printf(" Player in "); 
    printf("%d", teams); 
    printf(" Teams. \n"); 

    int array[mitglieder]; 

    for (int i = 0; i < mitglieder; i++) 
    {  // fill array 
     array[i] = i;    
    } 

    printf("The Player are in the following Teams: \n "); 

    for (int i = 0; i < mitglieder; i++) 
    { // shuffle array 
     int temp = array[i]; 
     int randomIndex = rand() % mitglieder; 

     array[i]   = array[randomIndex]; 
     array[randomIndex] = temp; 
    } 

    for (int i = 0; i < mitglieder; i++) 
    { // print array 
     int random_number = rand() % teams + 1; 
     int tp = random_number; 

     if(tp == 1) 
     { 
      teameins+1; 
     } 
     else if(tp == 2) 
     { 
      teamzwei+1; 
     } 
     else if(tp == 3) 
     { 
      teamdrei+1; 
     } 
     else if(tp == 4) 
     { 
      teamvier+1;       
     } 

     printf("Team %d - Spieler: %d\n ",random_number,array[i] + 1);  
    } 

    if((teamvier == 0) && (teamdrei == 0)) 
    { 
     printf("\n%d Mitglieder in Team 1 und %d Mitglieder in Team2",teameins,teamzwei); 
    } 
    else if((teamvier == 0) && (teamdrei < 0)) 
    { 
     printf("\n%d Mitglieder in Team 1, %d Mitglieder in Team2 und %d Mitglieder in Team3.",teameins,teamzwei,teamdrei); 
    } 
    else if(teamvier < 0) 
    { 
     printf("\n%d Mitglieder in Team 1, %d Mitglieder in Team2, %d Mitglieder in Team 3 und %d Mitglieder in Team4.",teameins,teamzwei,teamdrei,teamvier); 
    } 

    return 0; 
} 
+3

你不需要“美好的夜晚” - 这可能是人们阅读这一天的中间时间! –

+0

对不起,这是我的一个坏习惯。感谢您的信息! –

+2

“我如何保存这些信息”,您需要设计一个数据结构来存储生成的数据。例如,您可以拥有一组阵列,其中每个阵列条目都是玩家列表。 – kaylum

回答

0

在给定的代码基础的东西之前,你应该纠正其错误,这是团队成员的计数和计数的打印范围内。当你处于这种状态时,你也可以为四个以上的团队工作,例如,摹:

#include <string.h> 
… 
    int Spielerteam[mitglieder];    // team of the player 
    int Teamstaerke[teams];      // team member counts 
    memset(Teamstaerke, 0, sizeof Teamstaerke); // zero the counts 

    for (int i = 0; i < mitglieder; i++) 
    { // print array 
     int random_number = rand() % teams; 
     int tp = random_number + 1; 
     Spielerteam[i] = tp;   // save player's team information 
     Teamstaerke[random_number]++; // count the member 
     printf("Team %d - Spieler: %d\n ", tp, array[i] + 1);  
    } 

    for (int i = 0; i < teams; i++) 
     printf("%s%d Mitglieder in Team %d", 
       i ? i+1 == teams ? " und " : ", " : "\n", Teamstaerke[i], i+1); 
    puts(""); 

之后,球队每个球员array[i] + 1属于保存在Spielerteam[i]