Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Pokedex Assessment Jake Beetham
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
jake.beetham
Pokedex Assessment Jake Beetham
Commits
07412a02
Commit
07412a02
authored
Jan 17, 2022
by
jake.beetham
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new file
parents
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
239 additions
and
0 deletions
+239
-0
main.c
main.c
+239
-0
No files found.
main.c
0 → 100644
View file @
07412a02
#include <stdio.h>
#include<stdlib.h> // We required stdlib.h for malloc
#include<string.h>
//_________________________________________________________section 1 - structs
//setting up a pokemon node
typedef
struct
PokemonNode
{
//setting the data for the creation of a pokemon
char
pokemonName
[
50
];
char
pokemonType
[
50
];
char
pokemonAbility
[
50
];
//this will allow me to move to the next node in the list
struct
PokemonNode
*
next
;
}
PokemonNode
;
//setting up a player node
typedef
struct
PlayerNode
{
//setting the data for the creation of a player
char
playerName
[
50
];
int
pokemonCounter
;
PokemonNode
*
PokemonArray
[
20
];
//this will allow me to move to the next node in the list
struct
PlayerNode
*
next
;
}
PlayerNode
;
//setting up pokedex struct
typedef
struct
Pokedex
{
PokemonNode
*
PokemonHead
;
//pointer to pokemon list
PlayerNode
*
PlayerHead
;
//pointer to pokemon list
}
Pokedex
;
//______________________________________________section 2 - setting up functions
//pokemon functions
PokemonNode
*
NewPokemonNode
(
char
pokemonName
[
50
],
char
pokemonType
[
50
],
char
pokemonAbility
[
50
]);
void
AddPokemonToList
(
PokemonNode
*
start
,
char
pokemonName
[
50
],
char
pokemonType
[
50
],
char
pokemonAbility
[
50
]);
PokemonNode
*
FindPokemon
(
Pokedex
*
pokedex
,
char
pokemonName
[
50
]);
//player functions
PlayerNode
*
NewPlayerNode
(
char
playerName
[
50
])
;
void
AddPlayerToList
(
PlayerNode
*
start
,
char
playerName
[
50
]);
PlayerNode
*
FindPlayer
(
Pokedex
*
pokedex
,
char
playerName
[
50
]);
void
AddPokemonToPlayer
(
Pokedex
*
pokedex
,
char
playerName
[],
char
pokemonName
[]);
//pokedex functions
void
DisplayPokemonDetails
(
Pokedex
*
pokedex
,
char
playerName
[
50
]);
void
DisplayPlayerDetails
(
Pokedex
*
pokedex
,
char
playerName
[
50
]);
void
ListPokemon
(
Pokedex
*
pokedex
);
void
ListPlayers
(
Pokedex
*
pokedex
);
//______________________________________________section 3 - main
int
main
(
void
)
{
//creating a head for the pokemon list
PokemonNode
*
PokemonHead
=
NewPokemonNode
(
"Ludicolo"
,
"Water"
,
"Bubble Beam"
);
//creating a head for the player list
PokemonNode
*
PlayerHead
=
NewPlayerNode
(
"Brock"
);
//using the AddPokemonToList function to add more pokemon into the list
AddPokemonToList
(
PokemonHead
,
"Minun"
,
"Electric"
,
"Thunder Wave"
);
AddPokemonToList
(
PokemonHead
,
"Monferno"
,
"Fire"
,
"Overheat"
);
AddPokemonToList
(
PokemonHead
,
"Froslass"
,
"Ice"
,
"Ice Fang"
);
AddPokemonToList
(
PokemonHead
,
"Reshiram"
,
"Dragon"
,
"Outrage"
);
//using the AddPlayerToList function to add more players into the list
AddPlayerToList
(
PlayerHead
,
"Ash"
);
AddPlayerToList
(
PlayerHead
,
"Dawn"
);
AddPlayerToList
(
PlayerHead
,
"Morty"
);
AddPlayerToList
(
PlayerHead
,
"May"
);
printf
(
"Welcome to the Pokedex!
\n
"
);
printf
(
"Please select one of the options below:
\n
"
);
//creating a menu selection variable
int
selectOption
;
printf
(
"1 • Display all pokemon stored inside of the pokedex:
\n
"
);
printf
(
"2 • Display details about a specific pokemon:
\n
"
);
printf
(
"3 • Display the players inside our system:
\n
"
);
//taking the input of the user selection
scanf
(
"%d"
,
&
selectOption
);
//if the user selects this option they will be provided all details about every pokemon stored inside of the pokedex
if
(
selectOption
==
1
){
printf
(
"You have chosen to display all pokemon stored inside of the pokedex...
\n
"
);
PokemonNode
*
temp
=
PokemonHead
;
//iterating through the list and print each pokemon stored inside
while
(
temp
->
next
!=
NULL
){
printf
(
"Pokemon Name: %s
\n
"
,
temp
->
pokemonName
);
printf
(
"Pokemon Type: %s
\n
"
,
temp
->
pokemonType
);
printf
(
"Pokemon Ability: %s
\n\n
"
,
temp
->
pokemonAbility
);
temp
=
temp
->
next
;
}
main
();
}
if
(
selectOption
==
2
){
printf
(
"You have chosen to display the details of only one pokemon...
\n
"
);
printf
(
"Which pokemon would you like to view:
\n
"
);
char
whichPokemon
;
//taking the input of the user selection
scanf
(
"%s"
,
&
whichPokemon
);
PokemonNode
*
temp
=
PokemonHead
;
while
(
temp
->
next
!=
NULL
){
if
(
strcmp
(
temp
->
pokemonName
,
&
whichPokemon
)
==
0
){
printf
(
"Pokemon Name: %s
\n
"
,
temp
->
pokemonName
);
printf
(
"Pokemon Type: %s
\n
"
,
temp
->
pokemonType
);
printf
(
"Pokemon Ability: %s
\n\n
"
,
temp
->
pokemonAbility
);
main
();
}
return
NULL
;
main
();
}
}
if
(
selectOption
==
3
){
printf
(
"You have chosen to display all of the players in our system...
\n
"
);
PlayerNode
*
temp
=
PlayerHead
;
//iterating through the list and print each pokemon stored inside
while
(
temp
->
next
!=
NULL
){
printf
(
"Player Name: %s
\n\n
"
,
temp
->
playerName
);
temp
=
temp
->
next
;
}
main
();
}
return
0
;
}
else
//______________________________________________section 4 - creating functions
//creating a new pokemon node
PokemonNode
*
NewPokemonNode
(
char
pokemonName
[
50
],
char
pokemonType
[
50
],
char
pokemonAbility
[
50
]){
// creating a pointer to a node structure, set it to NULL for safety
PokemonNode
*
new_node
=
NULL
;
// setting aside space in memory for a node structure. If this fails new_node will be set to NULL
new_node
=
malloc
(
sizeof
(
PokemonNode
));
// ensuring the node exists before accessing it.
if
(
new_node
!=
NULL
)
{
// setting data values as required
strcpy
(
new_node
->
pokemonName
,
pokemonName
);
strcpy
(
new_node
->
pokemonType
,
pokemonType
);
strcpy
(
new_node
->
pokemonAbility
,
pokemonAbility
);
// Set next to NULL
new_node
->
next
=
NULL
;
}
return
new_node
;
}
//adding pokemon to the list
void
AddPokemonToList
(
PokemonNode
*
start
,
char
pokemonName
[
50
],
char
pokemonType
[
50
],
char
pokemonAbility
[
50
]){
PokemonNode
*
temp
=
start
;
// If next is NULL we are on the last entry in the list
while
(
temp
->
next
!=
NULL
){
//moving us onto the next node in the list
temp
=
temp
->
next
;
}
temp
->
next
=
NewPokemonNode
(
pokemonName
,
pokemonType
,
pokemonAbility
);
}
//finding a pokemon inside the pokedex
PokemonNode
*
FindPokemon
(
Pokedex
*
pokedex
,
char
pokemonName
[
50
]){
PokemonNode
*
temp
=
pokedex
->
PokemonHead
;
while
(
temp
->
next
!=
NULL
){
if
(
strcmp
(
temp
->
pokemonName
,
pokemonName
)
==
0
){
return
temp
;
}
return
NULL
;
}
}
//creating a new player node
PlayerNode
*
NewPlayerNode
(
char
playerName
[
50
]){
// creating a pointer to a node structure, set it to NULL for safety
PlayerNode
*
new_node
=
NULL
;
// setting aside space in memory for a node structure. If this fails new_node will be set to NULL
new_node
=
malloc
(
sizeof
(
PokemonNode
));
// ensuring the node exists before accessing it.
if
(
new_node
!=
NULL
)
{
// setting data values as required
strcpy
(
new_node
->
playerName
,
playerName
);
new_node
->
pokemonCounter
=
0
;
// Set next to NULL
new_node
->
next
=
NULL
;
}
return
new_node
;
}
//adding players to the list
void
AddPlayerToList
(
PlayerNode
*
start
,
char
playerName
[
50
]){
PlayerNode
*
temp
=
start
;
// If next is NULL we are on the last entry in the list
while
(
temp
->
next
!=
NULL
){
//moving us onto the next node in the list
temp
=
temp
->
next
;
}
temp
->
next
=
NewPlayerNode
(
playerName
);
}
//findingn a player inside of the list
PlayerNode
*
FindPlayer
(
Pokedex
*
pokedex
,
char
playerName
[
50
]){
PlayerNode
*
temp
=
pokedex
->
PlayerHead
;
while
(
temp
->
next
!=
NULL
){
if
(
strcmp
(
temp
->
playerName
,
playerName
)
==
0
){
return
temp
;
}
return
NULL
;
}
}
void
AddPokemonToPlayer
(
Pokedex
*
pokedex
,
char
playerName
[],
char
pokemonName
[]){
PlayerNode
*
playerNodePtr
=
FindPlayer
(
pokedex
,
playerName
);
//checking if the players team is currently full
if
(
playerNodePtr
->
pokemonCounter
>=
6
){
printf
(
"This player's team is currently full, please try again..."
);
}
//if the players team has less than 6 pokemon we can add a pokemon to the players team
if
(
playerNodePtr
->
pokemonCounter
<
6
){
//increases players pokemon team number by 1
playerNodePtr
->
pokemonCounter
=
playerNodePtr
->
pokemonCounter
+
1
;
}
}
\ No newline at end of file
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