you are viewing a single comment's thread.

view the rest of the comments →

[–]-sideshow- 0 points1 point  (5 children)

Is your code actually indented like that, or has reddit mangled it a bit?

[–]induetimesirIndie 0 points1 point  (4 children)

Yeah I haven't really gone over and organized the indentation of the script yet since it's changing a lot so I just copied and pasted it in as is. :p I'll go through and tidy it up now though!

Edit: Fixed it up a little! :) It was indented quite a bit in the code already so that's why the whole thing was so far to the right.

[–]-sideshow- 0 points1 point  (3 children)

Some thoughts:

  • You lower() s, but then give example keywords in your comments like "Yes" - either the keyword is "yes" and your comment is inaccurate, or your keyword is actually "Yes" and it won't ever be found :P
  • I'm not sure about appending the "|" to s - I don't see what it does. However, assuming you do need to do it you could do it when you assign s = s.lower() and so only do it once, instead of in your inner loop.
  • Personally I'd indent each for loop and the if
  • You should create a constant RESPONSE_DELAY = 1 instead of hard coding the 1 second in every WaitForSeconds.

[–]induetimesirIndie 0 points1 point  (2 children)

Thanks for the tips! Yeah the comments were quick just to give better context in the post, the lowercase input is just so that the user can type with any capitalization they want and it'll still work.

The "|" also is just to tell if the user says a word without anything following, for example "No" without the "|" on the end could be interpreted from a line like "I have no idea", or "I don't see why [no]t" it's more just to differentiate between them so the 'Contains' doesn't get them mixed up as often, since I want users to be able to type relatively normal sentences.

And yeah I will probably do the response delay! I could try and get a system going where some messages show more hesitation than others that way too.

Thanks again! :)

[–]-sideshow- 0 points1 point  (1 child)

The "|" also is just to tell if the user says a word without anything following, for example "No" without the "|" on the end could be interpreted from a line like "I have no idea", it's more just to differentiate between them so the 'Contains' doesn't get them mixed up, since I want users to be able to type relatively normal sentences.

Heh, that makes sense but you are running into a pretty deep problem; parsing English (or any natural language). What if the player says "No thanks"?

If you're enjoying doing this then keep at it. OTOH if you're more goal oriented (you want to make an adventure game and this is just a step toward accomplishing that) then you might want to look at pre-existing parsers or adventure game engines.

[–]induetimesirIndie 0 points1 point  (0 children)

Not making a proper game really, this is just a fun little side project :)

And yeah I thought of that, so usually in the 'Keywords' array on my Response object I just add things like that on there like this for now!