Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
alxm2024
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
alxm2024
Commits
c6931e48
Commit
c6931e48
authored
Jan 31, 2025
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Dodatkowa 'gra' z innych zajęć.
parent
88daa8e9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
111 additions
and
0 deletions
+111
-0
skarb.c
dzien12/skarb.c
+111
-0
No files found.
dzien12/skarb.c
0 → 100644
View file @
c6931e48
/*
Napisz grę polegającą na poszukiwaniu skarbu na dwuwymiarowej planszy o rozmiarach 10 na 10.
Plansza jest wirtualna - nie trzeba ani w pamięci tworzyć żadnych tablic, ani żadnej planszy wyświetlać :)
Program na początku losuje położenie skarbu na planszy (współrzędne x i y)
oraz początkowe położenie gracza.
Następnie w pętli użytkownik może wprowadzać komendy zmieniające położenie gracza.
(np. po polsku G D L P, albo po angielsku U D L R, albo konwencja graczy W S A D)
Po każdym ruchu użytkownik powinien otrzymywać informację o tym, czy zmierza w dobrym kierunku.
Wyjście poza planszę oznacza porażkę - koniec gry.
Wejście przez gracza na pozycję skarbu oznacza wygraną.
Po znalezieniu skarbu program wypisuje gratulacje i informację o liczbie ruchów
wykorzystanych przez użytkownika na dojście do celu.
Ten program dla urozmaicenia będzie napisany w C :-)
(tak naprawdę łatwiej pisało się z użyciem printf niż cout)
Kompilujcie gcc skarb.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
const
int
SIZE
=
10
;
const
int
PODPOWIADANIE
=
1
;
// true
int
losuj
(
int
limit
)
// zwraca liczbę z zakresu od 0 do limit-1
{
return
rand
()
%
limit
;
}
int
main
()
{
srand
(
time
(
0
));
int
skarb_x
=
losuj
(
SIZE
);
int
skarb_y
=
losuj
(
SIZE
);
int
gracz_x
=
losuj
(
SIZE
);
int
gracz_y
=
losuj
(
SIZE
);
if
(
PODPOWIADANIE
)
{
printf
(
"Pozycja skarbu: (%d , %d)
\n
"
,
skarb_x
,
skarb_y
);
}
int
stan_gry
=
0
;
int
liczba_krokow
=
0
;
while
(
stan_gry
==
0
)
{
if
(
PODPOWIADANIE
)
{
printf
(
"
\n
Aktualna pozycja: (%d , %d)
\n
"
,
gracz_x
,
gracz_y
);
}
int
stara_odleglosc
=
abs
(
skarb_x
-
gracz_x
)
+
abs
(
skarb_y
-
gracz_y
);
printf
(
"Podaj ruch [WSAD] lub przerwij [Q]: "
);
char
ruch
;
scanf
(
"%c"
,
&
ruch
);
switch
(
toupper
(
ruch
))
{
case
'W'
:
gracz_y
--
;
break
;
case
'S'
:
gracz_y
++
;
break
;
case
'A'
:
gracz_x
--
;
break
;
case
'D'
:
gracz_x
++
;
break
;
case
'Q'
:
stan_gry
=
2
;
printf
(
"Poddajesz się?...
\n
"
);
continue
;
default:
printf
(
"Nie ma takiej komendy
\n
"
);
continue
;
}
liczba_krokow
++
;
if
(
gracz_x
<
0
||
gracz_x
>
9
||
gracz_y
<
0
||
gracz_y
>
9
)
{
printf
(
"Wypadasz poza planszę
\n
"
);
stan_gry
=
2
;
break
;
}
if
(
gracz_x
==
skarb_x
&&
gracz_y
==
skarb_y
)
{
stan_gry
=
1
;
break
;
}
int
nowa_odleglosc
=
abs
(
skarb_x
-
gracz_x
)
+
abs
(
skarb_y
-
gracz_y
);
if
(
nowa_odleglosc
<
stara_odleglosc
)
{
printf
(
"Zbliżasz się do skarbu
\n
"
);
}
else
{
printf
(
"Oddalasz się od skarbu
\n
"
);
}
}
switch
(
stan_gry
)
{
case
1
:
printf
(
"Wygrana, gratulacje!
\n
Zajęło Ci to %d kroków.
\n
"
,
liczba_krokow
);
break
;
case
2
:
printf
(
"Przegrana :(
\n
"
);
break
;
default:
printf
(
"Nie wiem co się stało
\n
"
);
}
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment