12 svar
106 visningar
nenne27 är nöjd med hjälpen
nenne27 34
Postad: 21 sep 23:25

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

Skaft 2371 – F.d. Moderator
Postad: 22 sep 06:34

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.

nenne27 34
Postad: 22 sep 15:32

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? 

nenne27 34
Postad: 22 sep 15:50

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

nenne27 34
Postad: 22 sep 18:40

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?

Laguna Online 16529
Postad: 22 sep 18:43

Det funkar nog, men använd inte fler tal än som förekommer i chokladkakan. 

nenne27 34
Postad: 22 sep 18:49

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?

Laguna Online 16529
Postad: 22 sep 19:00

Du får skapa listorna när du vet storleken på chokladkakan. Det är ett sätt i alla fall.

nenne27 34
Postad: 22 sep 19:38

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

Laguna Online 16529
Postad: 22 sep 20:31

En lista kan du skriva ut så här:

for e in [11,12,13]:

    print(" %d" % e, end="")

print()

nenne27 34
Postad: 22 sep 21:54

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]?

Svara Avbryt
Close