我试图创建一个程序,将一定数量的玩家放入一定数量的团队中。之后他们应该被随机选择(例如,你掷出"骰子"以及第3队&#39的玩家42并且将对抗第4队的玩家22(所有玩家随机进入不同的团队,仅限于Gamemaster的选择))。
在我的代码中,我有基本的输出和结构。它说的是:
第1队现在拥有玩家43 Team 2现在拥有Player 12 Team 4现在拥有Player 1 Team 3现在拥有Player 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;
}
答案 0 :(得分:0)
在确定给定代码的基础之前,您应该更正其中的错误,这些错误在团队成员的计数和计数的打印范围内。当你参与其中时,你可以让它超过四个团队,e。 G:
#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]
中。