Človeče- problém so zadaním – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Človeče- problém so zadaním – Python – Fórum – Programujte.comČloveče- problém so zadaním – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Item0
Newbie
18. 11. 2017   #1
-
-1
-
Mimo téma

Čaute , chcel by som sa podeliť o svoj problém so zadaním , ktoré som dostal, vytvoriť hru človeče nehnevaj sa. 

Skúšal som vytvoriť hraciu plochu ale aj keď sa mi to podarilo tak sa to nedalo ovládať alebo sa to ovládalo veľmi tažko. Hracia plocha by mala byť klasická . 

Připojen obrázek.

Připojen obrázek.

Ďakujem za akúkoľvek pomoc.   

Nahlásit jako SPAM
IP: 147.175.186.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 11. 2017   #2
-
0
-

Nerozumím dotazu. Jak nedalo ovládat? U takového rozložení pravděpodobně zadáváš souřadnice figurky.

Nahlásit jako SPAM
IP: 213.211.51.–
Item0
Newbie
19. 11. 2017   #3
-
0
-

Pri hode kockou mi panáčik išiel stále mimo hracej plochy, je to možno aj spôsobené tým , že mám tu plochu spravenú zlým spôsobom. Preto som to tu dal aby som videl, či sa táto hracia plocha dá vytvoriť a potom ľahko ovládať kedže sa v priebehu hry musia meniť pozície panáčikov. :) 

Nahlásit jako SPAM
IP: 147.175.186.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 11. 2017   #4
-
0
-

Netuším, jak tu plochu generuješ, ale můžeš si při tom ten okruh uložit, tak jak jdou ty hvězdičky za sebou, nebo další políčko vždycky hledat v té ploše. Nedovedu si představit, jak by to vylezlo mimo.

import os
import time

sachovnice = [[' ',' ',' ','*','*','*',' ',' ',' '],
              [' ',' ',' ','*','D','*',' ',' ',' '],
              [' ',' ',' ','*','D','*',' ',' ',' '],
              ['*','*','*','*','D','*','*','*','*'],
              ['*','D','D','D','X','D','D','D','*'],
              ['*','*','*','*','D','*','*','*','*'],
              [' ',' ',' ','*','D','*',' ',' ',' '],
              [' ',' ',' ','*','D','*',' ',' ',' '],
              [' ',' ',' ','*','*','*',' ',' ',' ']]

def show(sachovnice):
	os.system('cls' if os.name == 'nt' else 'clear')
	for radek in sachovnice:
		print(''.join(radek))

def nextpos(sachovnice, x, y):
	size = len(sachovnice)
	if x < size // 2:
		if y > 0 and sachovnice[y-1][x] == '*':
			return x, y-1
	else:
		if y < size-1 and sachovnice[y+1][x] == '*':
			return x, y+1
	if y < size // 2:
		if x < size-1 and sachovnice[y][x+1] == '*':
			return x+1, y
	else:
		if x > 0 and sachovnice[y][x-1] == '*':
			return x-1, y
	return x, y

x, y = 5, 0
while True:
	sachovnice[y][x] = '*'
	x, y = nextpos(sachovnice, x, y)
	sachovnice[y][x] = 'A'
	show(sachovnice)
	time.sleep(0.2)
Nahlásit jako SPAM
IP: 213.211.51.–
Item0
Newbie
19. 11. 2017   #5
-
0
-

Robil som to ako ty to znamená na spôsob zoznam v zozname , ale mám otázku čo vykonáva  

def show(sachovnice):
	os.system('cls' if os.name == 'nt' else 'clear')
	for radek in sachovnice:
		print(''.join(radek))

tento príkaz ? To som v mojom kóde nemal ale potom som sa vytrápil na veci čo , ak keď hodím napr. čislo 6 ako naprogramujem to aby sa to posunulo v x aj v y osi tak aby to presne vyšlo na to správne miesto. Rozmýšlal som nad tým a jediné čo ma napadlo je že naprogramovať ho v každej pozicií , čo je predpokladám asi blbosť alebo sa mýlim ? 

Nahlásit jako SPAM
IP: 147.175.186.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 11. 2017   #6
-
0
-

os.system spustí systémový příkaz. Pro Windows ('nt') příkaz 'cls', na ostatních systémech příkaz 'clear'. To je na smazání obrazovky. Ten cyklus pak projde všechny řádky a hodnoty řádku spojí do řetězce, který vypíše.

Funkce nextpos ze souřadnic libovolné hvězdičky vrátí souřadnice následující hvězdičky ve směru hodinových ručiček. Pokud chceš postopit o více kroků, tak ji stačí zavolat víckrát. Samozřejmě je to jen ukázka, neřeší to postavené figurky a postup do domečku.

Nahlásit jako SPAM
IP: 213.211.51.–
Item0
Newbie
19. 11. 2017   #7
-
0
-

A čo sa týka uchovania si pozície figúrky a vchodu do domčeka ?   

Nahlásit jako SPAM
IP: 147.175.186.–
Item0
Newbie
20. 11. 2017   #8
-
0
-

   

Práve som zistil , že veľkosť tej hracej plochy sa má meniť v závislosti od n ktorá bude vo funkcii , dĺžka ramien má byť až po okraj štvorca rozmerov nxn kdežto širka ramien je stále 3.       

Nahlásit jako SPAM
IP: 147.175.186.–
peter
~ Anonymní uživatel
4014 příspěvků
20. 11. 2017   #9
-
0
-

- nxn je mysleno jako treba 8 x 8
- ze zadani neni uplne jasne, kolik bude min-max policek v domecku, pocet figurek byva 4, na obrazku zadani jsou 3 policka a v textu to neni upresneno
- board, herni plochu, by bylo mozna lepsi ulozit jako jeden velky string a sekat to az pri zobrazovani. Ale nevim, jak moc se s tim lip pracuje v c, delam jine jazyky 

.o.
ooo
.o.

board = '.o.ooo.o.';
mx = 3;
my = 3;
x = 0;
y = 0;
z = mx * y + x;
policko = board[z];
// tohle by vykreslilo herni plochu
mz = mx * my;
for(i=0; i<mz; i++)
  {
  zobraz(board[i]); // zobrazi znak
  if (i%mx==mx) {zobraz("\n");} // zalomeni radku, v html <br>; % je celociselne deleni
  }
// jakoze nepotrebujes 2 for cykly, ale zas musis stale prepocitavat souradnice

- v tom vykresleni nevidim problem
Jde to udelat treba tak, ze vykreslis dva obdelniky || + ==.
Prekreslis * navic.
Pridas domecky.

- gna kod pro nextpos najde jen nasledujici pozici.
Porovnava, zda policko je uprostred x=n/2, y=n/2
A v druhe fazi zjistuje, zda se jde nahoru nebo dolu pro x, doprava, doleva pro y
Ale jestli ti to prijde nesrozumitelne, tak si tam dej vlastni detekci s tim, ze prohledas vsechny 4 souradnice.
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:4135:5e...–
gna
~ Anonymní uživatel
1891 příspěvků
20. 11. 2017   #10
-
0
-

#8 Item
Ta hra je hodně známá a zadání docela jasné. Tobě se nějak podařilo ho pochopit jinak?

Nahlásit jako SPAM
IP: 213.211.51.–
Item0
Newbie
20. 11. 2017   #11
-
0
-

No pochopil som to tak, že ten kríž sa už nemení v závislosti od n lebo som si nevedel predstaviť ten kríž vo veľkosti napr. 19x19 a koľko by bol počet domčekov v takomto prípade ale dnes som zistil že kríž sa ma prispôsobiť počtu zadaného rozmeru čiže pre hocijaké n>=9

Nahlásit jako SPAM
IP: 147.175.190.–
Item0
Newbie
20. 11. 2017   #12
-
0
-

#9 peter
No to nemalo byť v C ale python ale vďaka za snahu   

Nahlásit jako SPAM
IP: 147.175.190.–
Item0
Newbie
20. 11. 2017   #13
-
0
-

Taktiež som sa dozvedel . že najlepšia cesta je vraj zoznam v zozname. 

Nahlásit jako SPAM
IP: 147.175.186.–
peter
~ Anonymní uživatel
4014 příspěvků
21. 11. 2017   #14
-
0
-

Seznam bodu trasy je jiste nejrychlejsi pro program, nemas tam if podminky. Ale ten gna-ho kod mi neprijde zas tak slozity.
list = array (22, 23, 24, 25, 26, 15 ...) //  je poloha na mape z, nebo si tam muzes dat x,y
i = 0; list[i];
i++; list[i]; ...

Nahlásit jako SPAM
IP: 2001:718:2601:258:824:e3d...–
Item0
Newbie
21. 11. 2017   #15
-
0
-

#14 peter
Ahoj predpokladám ,že to čo píšeš je jazyk C teda aspoň myslím ja to potrebujem v pythone :) 

Nahlásit jako SPAM
IP: 147.175.186.–
Item0
Newbie
21. 11. 2017   #16
-
0
-

#10 gna
Mohol by som ťa poprosiť o pomoc s tou hracou plochou nxn pomocou zoznam v zozname potom by som to snáď už mohol zvládnuť :) 

Nahlásit jako SPAM
IP: 147.175.190.–
Wrunx
~ Anonymní uživatel
35 příspěvků
21. 11. 2017   #17
-
0
-

 Mohlo by to vypadat třeba takto:

def kresdesk(n):
	deska=[[" " for i in range(n) ] for j in range(n)]
	npul=n/2
	for i in xrange(n):
		deska[npul-1][i]=tras;deska[npul+1][i]=tras
		deska[i][npul-1]=tras;deska[i][npul+1]=tras
	deska[npul][0]=tras;deska[npul][n-1]=tras
	deska[0][npul]=tras;deska[n-1][npul]=tras
	for i in xrange(1,4):
		deska[npul][i]="b";deska[npul][n-i-1]="d"
		deska[i][npul]="a";deska[n-i-1][npul]="c"
	deska[npul][npul]="X"
	return deska

kde "n" je rozměr desky, a "tras" je znak kterým chceš označovat cestu figurek (třeba ta hvězdička).

Chlívky jsou značené písmenky, protože každá má svůj. Neříkám že to je kdovíjaký výkvět kódu, ale funguje mi pro různá (i sudá) n.

Nahlásit jako SPAM
IP: 188.120.195.–
Item0
Newbie
21. 11. 2017   #18
-
0
-

#17 Wrunx
Ahoj pri spustení tvojho kódu mi hodilo chybu xrange is not defined a potom list indices must be integers or slices, not float (ak som nahradil tras tými hviezdičkami . 

Nahlásit jako SPAM
IP: 147.175.186.–
Item0
Newbie
21. 11. 2017   #19
-
0
-

#17 Wrunx
už som to fixol tento spôsob je celkom dobrý ale ak dám nakresliť tú plochu tak ju vypíše do riadkov bolo by treba ju nejako spojiť :) 

Nahlásit jako SPAM
IP: 147.175.186.–
peter
~ Anonymní uživatel
4014 příspěvků
22. 11. 2017   #20
-
0
-

"\n" byva zalomeni radku v prog. jazycich (dvojznak hex=0D0A, 0x0D 0x0A).

Nahlásit jako SPAM
IP: 2001:718:2601:258:2cc9:31...–
gna
~ Anonymní uživatel
1891 příspěvků
22. 11. 2017   #21
-
0
-

#19 Item
Je to seznam v seznamu stejně jako jsem to dělal já a údajně i ty. Takže se to vypisuje úplně stejně. Od začátku je jasné, že nemáš ani řádek.

Nahlásit jako SPAM
IP: 213.211.51.–
Item0
Newbie
22. 11. 2017   #22
-
0
-

Áno je to zoznam v zozname ale bolo by som treba spojiť do jednej plochy a áno nemám ani riadok lebo ak by som to mal tak by som to tu nepísal a neotravoval ľudí na stránke    

Nahlásit jako SPAM
IP: 147.175.190.–
Item0
Newbie
27. 11. 2017   #23
-
0
-

Dobrý deň chcel by som sa spýtať ako na to s tými domcekmi lebo tu sachovnicu mam a plus aj ten pohyb ale neviem ako spojazdniť aby figúrka šla aj do domčeka 

Nahlásit jako SPAM
IP: 147.175.190.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 23 hostů

Podobná vlákna

Problém so zadaním — založil w3q

Clovece — založil Tomas

Python-clovece — založil Mark123

Človeče nehnevaj sa — založil mrrobototo

Člověče nezlob se — založil Aldos

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý