Talvez seja assim que normalmente é feito. Você tem sua lista de ladrilhos diferentes que representam um ladrilho de estrada em todas as orientações possíveis. Da esquerda para a direita, todos os quatro cantos, de cima para baixo, qualquer que seja. Agora você indexará todos esses blocos com um byte cada. 8 bits, um para cada direção. Isso pode estar em um hashmap ou pelo nome do arquivo ... no entanto, você deseja fazer isso.
Então você tem isso:
O código de bytes do bloco acima é 00000000 . Então seu bloco que vai da esquerda para a direita (ou da direita para a esquerda) fica assim:
O código de bytes para esse bloco é 10001000 ou 136. Como outro exemplo, vamos ver uma interseção de três maneiras:
O código de bytes desse bloco é 10101000 .
Você provavelmente vê para onde estou indo. Você define as posições dos bits no byte que representa as conexões. Isso é muito melhor do que tentar fazer uma grande cadeia if / else que eu já vi antes. Quando estiver procurando colocar um bloco, examine os blocos ao redor e crie um byte ao longo do caminho. Defina 1 para blocos que possuem estradas (ou o que você deseja conectar) e 0 para blocos que não têm. Quando terminar, você terá o código de bytes do bloco exato de que precisa.
Observe que, ao criar os ativos, você pode reutilizá-los bastando girar e atribuir o código de bytes correto a ele.
EDIT : Imagens atualizadas para serem menos ruins. Sim, esses são melhores do que antes.