|
John Simmons / outlaw programmer wrote: you used the wrong term ("shorthands"),
How should it go then? shortcuts? shortlegs?
Greetings - Jacek
|
|
|
|
|
|
I was about to delete this, but might as well post it here first.
I'm making pac-man.
The Enemy is the "ghost", Hero is "pacman".
When the value of the map[x,y] = 1 it means there's a wall.
Worst thing is that the ghost is still going through walls.
Lesson for today: don't be lazy and design a decent recursive algorithm
if (Math.Abs(Enemy.X - Hero.X) > Math.Abs(Enemy.Y - Hero.Y))
{
if ((Enemy.X - Hero.X) > 0)
{
if ((map[Enemy.X - 1,Enemy.Y]) != 1)
{
Enemy.X -= 1;
}
else
{
if ((Enemy.Y - Hero.Y) > 0)
{
Enemy.Y -= 1;
}
else Enemy.Y += 1;
}
}
else
{
if ((map[Enemy.X + 1,Enemy.Y] != 1))
{
Enemy.X += 1;
}
else
{
if ((Enemy.Y - Hero.Y) > 0)
{
Enemy.Y -= 1;
}
else Enemy.Y += 1;
}
}
}
else
{
if ((Enemy.Y - Hero.Y) > 0)
{
if ((Enemy.Y - 1) != 1)
{
Enemy.Y -= 1;
}
else
{
if ((Enemy.X - Hero.X) > 0)
{
Enemy.X -= 1;
}
else Enemy.X += 1;
}
}
else
{
if ((Enemy.Y + 1 != 1))
{
Enemy.Y += 1;
}
else
{
if ((Enemy.X - Hero.X) > 0)
{
Enemy.X -= 1;
}
else Enemy.X += 1;
}
}
Giraffes are not real.
|
|
|
|
|
Probility of making a typo in this kind of code is equal to 1. Looking forward to see an updated algorithm in a "Clever Code" forum
I'd try making a 3x3 stochastic matrix which probabilities would depend on 1) player's location (let's say 0.9 xor 0.1), 2) validness of a move through wall (0 xor not-0)
Greetings - Jacek
modified on Monday, July 4, 2011 8:56 AM
|
|
|
|
|
Thanks, for the advice... it almost makes too much sense. Why didn't I think of that?
I'm never going to put my own code in 'clever code', seriously if I ever write something clever it'll be because I stole the idea.
Right now I got what it supposed to be doing, it's exactly the same idea but it has a better structure. I use one "if block" to gather information where the walls are, put the result in a byte and run it through a "select" block where every "case" evaluates the direction of the player. It's more readable and a lot easier (as in, not impossible) to comment on.
I'm getting more ambitious now and I'd like to try some ideas for more complex behavior, based on your suggestion. It also needs to be able to run through any given maze, right now I'm 'cheating' because the navigation is tailored to the only maze in the game.
The project started as a break from the boring database stuff at the job training center, so I didn't have much time to work on it. The rest of the game is only about 200 lines of code and it didn't took long to write, but to get decent enemies working proves to be quite a challenge.
Giraffes are not real.
|
|
|
|
|
Found myself coding something like the following just last week...
Dim bool as Boolean = False
If someExpression Then
bool = True
Else
bool = False
End If
If bool Then
Return True
Else
Return False
End If
Luckily I noticed just in time and simply Returned someExpression
Some days its better to just stay in bed...
It's an OO world.
|
|
|
|
|
Hey... it's ok to learn
(yes|no|maybe)*
|
|
|
|
|
Not at this level
It's an OO world.
|
|
|
|
|
At every level
(yes|no|maybe)*
|
|
|
|
|
I meant I shouldn't be learning how to return true or false depending on a variable's true or falseness which depends on an expressions true or falseness on which it should not depend at all, which would be false if you just started out, but true after almost a year of programming
Just true with me
It's an OO world.
|
|
|
|
|
Naerling wrote: I meant I shouldn't be learning how to return true or false depending on a variable's true or falseness which depends on an expressions true or falseness on which it should not depend at all, which would be false if you just started out, but true after almost a year of programming
Ok... I definitely like that
(yes|no|maybe)*
modified on Friday, July 1, 2011 5:13 AM
|
|
|
|
|
Good one.
At least you caught yourself.
Just because the code works, it doesn't mean that it is good code.
|
|
|
|
|
Naerling wrote: falseness
Falacy? Falaciousness? Falacio?
|
|
|
|
|
false
[fawls] Show IPA
adjective, fals·er, fals·est, adverb
–adjective
1. not true or correct; erroneous: a false statement.
2. uttering or declaring what is untrue: a false witness.
3. not faithful or loyal; treacherous: a false friend.
4. tending to deceive or mislead; deceptive: a false impression.
5. not genuine; counterfeit.
6. based on mistaken, erroneous, or inconsistent impressions, ideas, or facts: false pride.
7. used as a substitute or supplement, especially temporarily: false supports for a bridge.
8. Biology . having a superficial resemblance to something that properly bears the name: the false acacia.
9. not properly, accurately, or honestly made, done, or adjusted: a false balance.
10. inaccurate in pitch, as a musical note.
–adverb
11. dishonestly; faithlessly; treacherously: Did he speak false against me?
—Idiom
12. play someone false, to betray someone; be treacherous or faithless.
Origin:
before 1000; Middle English, Old English fals < Latin falsus feigned, false, orig. past participle of fallere to deceive; reinforced by or reborrowed from Anglo-French, Old French fals, feminine false < Latin
—Related forms
false·ly, adverb
false·ness, noun
half-false, adjective
qua·si-false, adjective
qua·si-false·ly, adverb
—Synonyms
1. mistaken, incorrect, wrong, untrue. 2. untruthful, lying, mendacious. 3. insincere, hypocritical, disingenuous, disloyal, unfaithful, inconstant, perfidious, traitorous. 4. misleading, fallacious. 5. artificial, spurious, bogus, forged. False, sham, counterfeit agree in referring to something that is not genuine. False is used mainly of imitations of concrete objects; it sometimes implies an intent to deceive: false teeth; false hair. Sham is rarely used of concrete objects and usually has the suggestion of intent to deceive: sham title; sham tears. Counterfeit always has the implication of cheating; it is used particularly of spurious imitation of coins, paper money, etc.
Falseness!
It's an OO world.
|
|
|
|
|
|
Greetings - Jacek
|
|
|
|
|
Looks like a good basis for a recursive function
If my jokes make me laugh, then I have already succeeded with 100% of my target audience
|
|
|
|
|
The next time someone tells you that true always returns true I want you to ask that person a question. Ask that person: Have you tested it? Frankly, when I see your code I see an excellent place to put a unit test.
|
|
|
|
|
In preparation for some redevelopment work, I was having a look through some legacy code provided by a contractor. I have a feeling that it does not do exactly what the comments suggest it does.
private bool HasApplicationAlready(int appTypeID, int registrationNumber, ref Application app)
{
bool foundOne = false;
List<Application> matches = new Application().GetApplicationListForContact(DataLocation.OnlineDataBase, Int32.Parse(Profile.RegistrationNumber));
Application bestMatch = null;
foreach (Application singleApp in matches)
{
if (singleApp.Application_type_id.GetValueOrDefault(0) == appTypeID)
{
if (bestMatch == null)
{
bestMatch = singleApp;
}
else
{
if (singleApp.ApplicationId > bestMatch.ApplicationId)
{
bestMatch = singleApp;
}
else
{
bestMatch = singleApp;
}
}
}
}
if (bestMatch != null)
{
app = bestMatch;
foundOne = true;
}
else
{
foundOne = false;
}
return foundOne;
}
Another gem I found was:
protected bool FinalValidation()
{
return true;
}
|
|
|
|
|
The second gem was really funny.
Good judgment comes from experience, and experience comes from bad judgment. Barry LePatner
...it's our division that makes us sane(r), and their unity that makes them crazy. Ian Shlasko
|
|
|
|
|
Yes, although if it were virtual, it could make sense. Even as it stands if it's a placeholder for something to be added later, it makes sense. (If public, I'd say it was probably an interface implementation; I often have trivial methods or property getters for that purpose.)
|
|
|
|
|
BobJanova wrote: Even as it stands if it's a placeholder for something to be added later, it makes sense.
I agree. But I find it funny to have a method called FinalValidation and does no validation at all. Maybe I just have a weird sense of humor.
Good judgment comes from experience, and experience comes from bad judgment. Barry LePatner
...it's our division that makes us sane(r), and their unity that makes them crazy. Ian Shlasko
|
|
|
|
|
Thing is, this code has been in production for as least 12 months.
|
|
|
|
|
So Final is obviously valid!
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
At a former place of employment we were told "Names mean nothing." If the function name is "Print" it may not get around to doing any. And for this crapware it was true. Typically functions were not single purpose. They might do 10 different things. These functions would be called by other functions only interested in the output of two of the operations and with the hope that the other eight did not cause any problems.
A colleague and I traced a subroutine down 25 levels making calls to these routines, we totally lost what the intended result was supposed to be and never reached bottom.
Psychosis at 10
Film at 11
|
|
|
|
|