Python hakkında son zamanlarda sordunuz tüm sorular bu proje için olmuştur. Ben Python için çok yeniyim (ama PHP iyi biraz biliyorum) çünkü ben bu kadar çok soru soruyorum neden olmayabilir fark ve Python bazı doğal kusur vardır çünkü muhtemelen değildir var.
Böylece ben şimdi projenin ne diyecek ve benim şimdiki fikrim ne olduğunu ve Python sadece bu tür ile ilgili uygun olmadığını öğrenmek gerekir ya da bir kaç şey var ki, ben yanlış yapıyorum bana söyleyebilir ya proje ve dil XYZ bu durumda daha iyi olurdu ya da bazı açık kaynak projesi var, hatta ben içeri yer almak isteyebilirsiniz
The project
I run a free turn based strategy game (think the campaign mode from the total war series but with even more complexity and depth) and am creating a combat simulator for it (again, think total war as an idea of how it'd work). I'm in no way deluded enough to think that I'll ever make anything as good as the Total war games alone but I do think that I can automate a process that I currently do by hand.
What will it do
It will have to take into account a large range of variables for the units, equipment, training, weather, terrain and so on and so forth. I'm aware it's a big task and I plan to do it a piece at a time in my free time. I've zero budget but it's a hobby that I'm prepared to put time into (and have already).
My current stumbling block
In PHP everything can access everything else, "wrong" though some might consider this it's really really handy for this. If I have an array of equipment for use by the units, I can get hold of that array from anywhere. With Python I have to remake that array each time I import the relevant data file and this seems quite a silly solution for a language that from my experience is well thought out. I've put in a system of logging function calls and class creation (because I know from a very basic version of this that I did in PHP once that it'll help a lot down the line) and the way that I've kept the data in one place is to pass each of my classes an instance to my logging list, smells like a hack to me but it's the only way I've gotten it to work.
Dolayısıyla ben bir şey eksik ve onu çok vermek isteyen kimsenin fikir takdir ediyorum sonuçlandırmak. Teşekkür ederim.
Code samples
Bu oluşumlar bir listesini oluşturur kadar (adı yanında) tek değer var ama onlar yerine sadece standart bir liste daha sınıfların bir listesi konum neden daha hangi ekleyerek tahmin. Bu data.py içinde bulunan
formations = []
formationsHash = []
def createFormations(logger):
"""This creates all the formations that will be used"""
# Standard close quarter formation, maximum number of people per square metre
formationsHash.append('Tight')
formations.append(Formation(logger, 'Tight', tightness = 1))
# Standard ranged combat formation, good people per square metre but not too cramped
formationsHash.append('Loose')
formations.append(Formation(logger, 'Loose', tightness = 0.5))
# Standard skirmishing formation, very good for moving around terrain and avoiding missile fire
formationsHash.append('Skirmish')
formations.append(Formation(logger, 'Skirmish', tightness = 0.1))
# Very unflexible but good for charges
formationsHash.append('Arrowhead')
formations.append(Formation(logger, 'Arrowhead', tightness = 1))
def getFormation(searchFor):
"""Returns the fomation object with this name"""
indexValue = formationsHash.index(searchFor)
return formations[indexValue]
Ben kadar yapma gibi kazanılmış ettik ama ben aşağıdaki gibi bir kod görünümlü bir şey bekliyoruz, çünkü ben erişmek gerekir ediyorum ne zaman bir kod örneği yok:
Python
tempFormation = data.getFormation(unit.formationType)
tempTerrain = data.getTerrain(unit.currentTerrain)
unit.attackDamage = unit.attackDamage * tempTerrain.tighnessBonus(tempFormation.tightness)
Cihaz ana listede ilgili arazi, oluşumu ve etajer endeksi / anahtarına bağlanan bir tamsayı içerir. Geçici değişkenler 3 hat daha kısa yapmak için kullanılır ama ben bir tane almak için unutmak ve (günlük kullanışlı giriyor budur) hatalı olduğunu daha önceki bir değer kullanmak eğer uzun vadede muhtemelen sorunlara neden olur.
PHP
$unit->attackDamage *= $terrain[$unit->currentTerrain]->tighnessBonus($unit->currentTerrain)
Birim sınıfı üzerinde bu kadar ilgili arazi endeksi (muhtemelen bir dize) ve içeri bulunuyor oluşumunu içerir
Belki bu (6 ay PHP 3 yıl vs) Python benim anlayış bazı büyük kusur gösterecektir.