programmera spel
Hej!
Jag ska programmera ett spel som heter chomp som är en chokladbar som består av ett antal rader och kolumner. Spelarna i tur och ordning väljer ett block och äter upp det valda blocket samt alla block under och till höger om det. Första blocket ifrån vänster i översta raden (P,) är förgiftad och spelet går ut på att försöka undvika det blocket för då äter man det och förlorar.
Först frågar jag hur många rader och kolumner personerna vill ha såhär:
rader=int(input('Hur många rader ska chokladbaren bestå av?'))
kolumner=int(input('Hur många kolumner ska chokladbaren bestå av?'))
sen vet jag inte hur jag fortsätter utöver att jag ska skapa en matris.
såhär ska de se ut i början:
Hur många rader ska chokladbaren bestå av: 6
Hur många kolumer ska chokladbaren bestå av: 7
Du kan använda listor i en lista för att representera chokladen. Dvs en yttre lista som innehåller inre listor. Varje inre lista motsvarar en rad, där en 1:a kan betyda att rutan finns kvar, och en 0:a att den är uppäten.
Sen när en spelare väljer en ruta, så kan du loopa igenom alla de index som är "till höger och under" och byta alla ettor där mot nollor.
Jag förstår inte riktigt hur chomp fungerar. Kommer den alltid att printa ut 12,13,14,15,16,17 osv oavsett hur många kolumner eller rader man skriver att man vill ha? för isåfall kan jag ha en lista med samma nummer hela tiden per rad
Nej, bara om du har 7 kolumner. Om du har t ex 2 rader och 3 kolumner, kommer chokladen att se så här ut:
P 12 13
21 22 23
Är det tydligare nu?
Ja! nu blev det mycket tydligare :D. Nu måste jag se till att den printar ut siffror efter vad man svarat i frågan om antal rader och kolumner. hur gör jag det ? jag vet att jag ska skapa en lista per rad men vad ska jag skriva i den listan? ska jag skriva ut alla siffror
ska jag skriva de inre listorna såhär rad1=["11", "12", "13", "14", "15", "16", '17', '18', '19', '20']
rad2=["21", "22", "23", "24", "25", "26", '27', '28', '29', '30']
och fortsätta till rad 10?
Det funkar nog, men använd inte fler tal än som förekommer i chokladkakan.
menar du upp till 17, 27 37 osv bara? men om de väljer fler än 7 kolumner då? borde man inte sätta ett maxvärde?
Du får skapa listorna när du vet storleken på chokladkakan. Det är ett sätt i alla fall.
hälsning=print('Välkommen till chomp!')
rader=int(input('Hur många rader ska chokladbaren bestå av?'))
kolumner=int(input('Hur många kolumner ska chokladbaren bestå av?'))
create_chocolate_bar=[]
r1=[11,12,13,14,15,16,17,18,19,20]
r2=[21,22,23,24,25,26,27,28,29,30]
r3=[31,32,33,34,35,36,37,38,39,40]
r4=[41,42,43,44,45,46,47,48,49,50]
r5=[51,52,53,54,55,56,57,58,59,60]
r6=[61,62,63,64,65,66,67,68,69,70]
r7=[71,72,73,74,75,76,77,78,79,80]
create_chocolate_bar=[r1,r2,r3,r4,r5,r6,r7]
for rader in range(rader):
print(create_chocolate_bar)
for kolumner in range(kolumner):
print(create_chocolate_bar)
såhär ser det ut nu. Jag har 3 problem:
1. den printar ut paranteserna också när den skriver ut t.ex. p1 och p2s innehåll. jag vill bara att talen ska stå bredvid varandra som tabellen ovan
2. den byter inte rad efter varje p1 och p2 utan de skrivs ut på samma rad
3. jag vill att den ska printa ut rader utefter vad användaren svarat i frågan om rader. Tex om användaren vill ha 3 rader så ska den printa ut r1, r2 och r3
En lista kan du skriva ut så här:
for e in [11,12,13]:
print(" %d" % e, end="")
print()
det printar bara ut 11,12,13 eller alla fall i python
Ja, eftersom Lagunas lista består av bara 11 12 13. Vad händer om du stoppar i r4 i stället för [11, 12, 13]?