我正在努力为我们的游戏创造一个坚实的空间。这是一个游戏,其中只有3个人被限制在一个数组中,如果有3个人以上进入游戏,那么我们需要创建另一个房间。我在网站上找到了此代码,但是当我尝试将其与我的代码合并时,它对我不起作用。
pragma solidity ^0.4.18;
contract StructArrayInit {
event OnCreateRoom(address indexed _from, uint256 _value);
struct Room {
address[] players;
uint256 whosTurnId;
uint256 roomState;
}
Room[] public rooms;
function createRoom() public {
Room memory room = Room(new address[](0), 0, 0);
rooms.push(room);
rooms[rooms.length-1].players.push(msg.sender);
OnCreateRoom(msg.sender, 0);
}
function getRoomPlayers(uint i) public view returns (address[]){
return rooms[i].players;
}
}
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
您可以尝试下面的代码,并让我知道是否有任何问题!
pragma solidity ^0.5.2;
contract PlayerChannel {
struct Player
{
uint PlayerId;
address payable userAddr;
}
struct Channel
{
uint[] playerCount;
uint ChannelList;
mapping(uint => Player) playerStructs;
Player player;
}
mapping(uint => Channel) channelStructs;
uint[] allChannels;
//Create New Game Channel
function newChannel(uint chanelnumber) public returns(bool success)
{
//To check Channel is created or not!
for(uint i =1; i <=chanelnumber; i++){
require(channelStructs[chanelnumber].ChannelList != i );
}
channelStructs[chanelnumber].ChannelList = chanelnumber;
allChannels.push(chanelnumber);
return true;
}
//Get Channel Details
function getChannel(uint chanelnumber) public view returns(uint playerCounts)
{
//To check Channel is created or not!
uint channelNum = channelStructs[chanelnumber].ChannelList;
if(channelNum != 0){
return(channelStructs[chanelnumber].playerCount.length);
}
else{
revert("Channel is not created!!");
}
}
//To Add player in Channel
function addPlayer(uint chanelnumber,uint playerId) public returns(bool message)
{
//To check Channel is created or not!
uint channelNum = channelStructs[chanelnumber].ChannelList;
if(channelNum != 0){
uint playerCounter = channelStructs[chanelnumber].playerCount.length;
if(playerCounter < 3){
channelStructs[chanelnumber].playerCount.push(playerId);
channelStructs[chanelnumber].playerStructs[playerId].userAddr = msg.sender;
channelStructs[chanelnumber].playerStructs[playerId].PlayerId = playerId;
return true;
}
else{
revert("Enter in new Channel, its full!!");
}
}
else{
revert("Channel is not created!!");
}
}
}