| | |
noob question
Please support our C# advertiser: $4.95 a Month - ASP.NET Web Hosting – Click Here!
![]() |
•
•
Join Date: Jul 2009
Posts: 9
Reputation:
Solved Threads: 0
Hi guys, i downloaded visual c# 2008 about a month ago and have been trying stuff out for myself.
I'm attempting to make a text based RPG, i made big progress but i'm stuck now.
Basically i want to show the player's HP in green whenever he has 51 to 100% of the maximum HP for his level, yellow from 26 - 50HP and red when below 25%.
My code shows the HP in green from 100% all the way down to 25%, going directly to red and bypassing yellow, how do i fix this?
here's the code.
a person in another forum gave me the following solution, but it didn't work, instead it showed the HP in green from 100 to 0% never changing color.
I'm attempting to make a text based RPG, i made big progress but i'm stuck now.
Basically i want to show the player's HP in green whenever he has 51 to 100% of the maximum HP for his level, yellow from 26 - 50HP and red when below 25%.
My code shows the HP in green from 100% all the way down to 25%, going directly to red and bypassing yellow, how do i fix this?
here's the code.
C# Syntax (Toggle Plain Text)
if (ok.player > 51% ok.maxhp) { Console.ForegroundColor = ConsoleColor.Green; Console.Write("{0}/{1} HP", ok.player, ok.maxhp); Console.ForegroundColor = ConsoleColor.White; } else if ((ok.player >= 26% ok.maxhp) && (ok.player <= 50% ok.maxhp)) { Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("{0}/{1} HP", ok.player, ok.maxhp); Console.ForegroundColor = ConsoleColor.White; } else if (ok.player < 25% ok.maxhp) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("{0}/{1} HP", ok.player, ok.maxhp); Console.ForegroundColor = ConsoleColor.White; }
a person in another forum gave me the following solution, but it didn't work, instead it showed the HP in green from 100 to 0% never changing color.
C# Syntax (Toggle Plain Text)
decimal one_percent = (decimal)(ok.maxhp / 100); decimal value = (decimal)ok.player; if (value > (one_percent * 51)) { // ok.player is greater than 51% of ok.maxhp Console.ForegroundColor = ConsoleColor.Green; Console.Write("{0}/{1} HP", ok.player, ok.maxhp); Console.ForegroundColor = ConsoleColor.White; } else if (value >= (one_percent * 26) && value <= (one_percent * 50)) { // ok.player is between 26% and 50% of ok.maxhp Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("{0}/{1} HP", ok.player, ok.maxhp); Console.ForegroundColor = ConsoleColor.White; } else if (value < (one_percent * 25)) { // ok.player is less than 25% of ok.maxhp Console.ForegroundColor = ConsoleColor.Red; Console.Write("{0}/{1} HP", ok.player, ok.maxhp); Console.ForegroundColor = ConsoleColor.White; }
I downloaded it about a year ago, still learning
but I believe I can help.
Your code : if (ok.player > 51% ok.maxhp)
The % is not what you think a percentage, it is the modulo operator! So you are comparing something against 51 modulo ok.maxhp, which is not what you want.
Other persons code : decimal one_percent = (decimal)(ok.maxhp / 100);
ok.maxhp / 100 is an integer divide, if maxhp is never greater than 100, one_percent will always be zero!
This is my code, hope it helps. You only have to restore the ok variable in it.
but I believe I can help.Your code : if (ok.player > 51% ok.maxhp)
The % is not what you think a percentage, it is the modulo operator! So you are comparing something against 51 modulo ok.maxhp, which is not what you want.
Other persons code : decimal one_percent = (decimal)(ok.maxhp / 100);
ok.maxhp / 100 is an integer divide, if maxhp is never greater than 100, one_percent will always be zero!
This is my code, hope it helps. You only have to restore the ok variable in it.
c# Syntax (Toggle Plain Text)
double maxhp = 55; double player = 25; decimal one_percent = (decimal)(maxhp / 100.0); decimal value = (decimal)player; if (value > (one_percent * 51)) { // ok.player is greater than 51% of ok.maxhp Console.ForegroundColor = ConsoleColor.Green; Console.Write("{0}/{1} HP", player, maxhp); } else if (value >= (one_percent * 26) && value <= (one_percent * 50)) { // ok.player is between 26% and 50% of ok.maxhp Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("{0}/{1} HP", player, maxhp); } else if (value < (one_percent * 25)) { // ok.player is less than 25% of ok.maxhp Console.ForegroundColor = ConsoleColor.Red; Console.Write("{0}/{1} HP", player, maxhp); } Console.ForegroundColor = ConsoleColor.White;
Today is a gift, that's why it is called "The Present".
Make love, no war. Cave ab homine unius libri.
Danny
Make love, no war. Cave ab homine unius libri.
Danny
•
•
Join Date: Jul 2009
Posts: 9
Reputation:
Solved Threads: 0
Thank you very much for your reply.
I have no doubt that code works, sadly yesterday night after posting the question i changed around some stuff in other code of the same program and now a lot of stuff doesn't work, i hate that i get no error messages, but the game still doesn't work as intended.
Basically i had 2 classes, one full of getters and setters with info, and another called world, where everthing took place in the game. But i wanted to create a class called "fight" and take my fighting code over there to make it a bit more manageable since my "world" class had around 1000 lines of code already.
But some info from the world and "items" class doesn't travel to my fight class, i heard that in c# you're only allowed to send info from 1 class to another and not more, if that's true, do i HAVE to make all my code in 1 class?
I'm starting college in January and i want to at least know a little something before i get there, i think everyone that takes a computer science program already knows a thing or two.
I have no doubt that code works, sadly yesterday night after posting the question i changed around some stuff in other code of the same program and now a lot of stuff doesn't work, i hate that i get no error messages, but the game still doesn't work as intended.
Basically i had 2 classes, one full of getters and setters with info, and another called world, where everthing took place in the game. But i wanted to create a class called "fight" and take my fighting code over there to make it a bit more manageable since my "world" class had around 1000 lines of code already.
But some info from the world and "items" class doesn't travel to my fight class, i heard that in c# you're only allowed to send info from 1 class to another and not more, if that's true, do i HAVE to make all my code in 1 class?
I'm starting college in January and i want to at least know a little something before i get there, i think everyone that takes a computer science program already knows a thing or two.
Last edited by thanatos1; Jul 4th, 2009 at 12:33 pm.
>i heard that in c# you're only allowed to send info from 1 class to another and not more
In C# you can't have multiple inheritance, if it is that what you mean. You can have many classes working together if you want to.
In C# you can't have multiple inheritance, if it is that what you mean. You can have many classes working together if you want to.
Today is a gift, that's why it is called "The Present".
Make love, no war. Cave ab homine unius libri.
Danny
Make love, no war. Cave ab homine unius libri.
Danny
![]() |
Similar Threads
- noob question (IT Professionals' Lounge)
- Pretty noob question regarding input (Perl)
- Noob with a question (IT Professionals' Lounge)
- Question (Networking Hardware Configuration)
- noob question (C)
- Noob question about Defining and Declaring. (C++)
- NOOB question , graphical tiles (C++)
Other Threads in the C# Forum
- Previous Thread: C# help pls....!!!
- Next Thread: c# client, java server
| Thread Tools | Search this Thread |
.net access algorithm app application array bitmap box c# check checkbox client color combo combobox concurrency control conversion csharp custom cyclethruopenforms data database datagrid datagridview dataset datatable date/time datetime degrees dll draganddrop drawing enabled encryption enum excel file filename finalyearproject foreach form format forms function gdi+ getoutlookcontactusinfcsvfile globalization gtk image input install installer java keypress label list localization math microsoftc#visualexpress mono mouseclick mysql operator panel path photoshop picturebox pixelinversion post programming radians regex remoting richtextbox save server sleep socket sql sql-server statistics string table text textbox thread time timer timespan update usercontrol users validate validation visualstudio webbrowser winforms wpf xml






