我试图使用随机构建的二维数组作为基于文本的游戏I地图的地图。如果我这样定义世界空间:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
[manager setTaskDidReceiveAuthenticationChallengeBlock:^NSURLSessionAuthChallengeDisposition(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLAuthenticationChallenge * _Nonnull challenge, NSURLCredential *__autoreleasing _Nullable * _Nullable credential) {
NSString *authenicationMethod = challenge.protectionSpace.authenticationMethod;
NSLog(@"Receive challenge: %@", authenicationMethod);
if ([authenicationMethod isEqualToString:NSURLAuthenticationMethodHTTPDigest]) {
*credential = [NSURLCredential credentialWithUser:@"username" password:@"password" persistence:NSURLCredentialPersistenceForSession];
return NSURLSessionAuthChallengeUseCredential;
}
return NSURLSessionAuthChallengeCancelAuthenticationChallenge;
}];
我假设我会使用for循环来访问self.outer的数组数据 - 使用随机模块来确定将替换哪些tile - 但是我如何使用特定的修饰符变量随机替换该数据,并限制被替换的数据量?例如,如果我想要替换大约25个原始草,或者' g,用敌人或者瓷砖,我怎么能这样做呢?可能有5个随机放置的城镇?
感谢您的回复。
答案 0 :(得分:1)
您可以使用randrange
生成行索引和列索引,并在那里添加敌人。如果在给定单元格中已经存在敌人或其他对象,则跳过它并随机化新坐标:
import random
def add(grid, char, count):
while count:
row = random.randrange(len(grid))
column = random.randrange(len(grid[0]))
if world[row][column] == 'g':
world[row][column] = char
count -= 1
用法:
world = [['g'] * 60 for _ in xrange(60)]
add(world, 'e', 25)
add(world, 't', 5)
这种方法只有在您的世界稀疏时才有意义,即世界上大部分地区都是草地。如果世界将被不同的物体填充,那么跟踪自由空间并从那里随机选择一个瓦片将是更好的方法。