• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
viper110110

There has to be a better way... (to get text)

6 posts in this topic

Is there a better way to do the following?

 

I tried importing Microsoft.VisualBasic and then using Interaction.InputBox() but it sometimes crashed and otherwise froze the game.

 

string text = string.Empty;

            if (IsNewKeyPress(Keys.A))
            {
                if (CurrentKeyboardState.IsKeyDown(Keys.LeftShift) || CurrentKeyboardState.IsKeyDown(Keys.RightShift))
                {
                    text += "A";
                }
                else
                {
                    text += "a";
                }
            }
            if (IsNewKeyPress(Keys.B))
            {
                if (CurrentKeyboardState.IsKeyDown(Keys.LeftShift) || CurrentKeyboardState.IsKeyDown(Keys.RightShift))
                {
                    text += "B";
                }
                else
                {
                    text += "b";
                }
            }
           //Through z, plus numbers

 

1

Share this post


Link to post
Share on other sites

depends on how IsNewKeyPress is implemented, can you capture key changes, or do you poll the entire keyboard?

 

in my keyboard implementation, i store an array of characters that recently changed, so i go over that list, and add the characters to my input field.

 

however, if you don't have any indication of what keys have changed, at best loop over the keys:

 

 

 //assuming ascii key chart, and first key is something like 32, and last key is something like 96 in ascii key chart.
 for(int i=FIRST_KEY;i<=LAST_KEY;i++){
  if(IsNewKeyPress(i)){
   if(LeftShift || RightShift) text+=upper(i); //upper returns an uppercase if possible, otherwise returns i. Also I stream-lined your left/right shift check.
   else text+=i;
 }
}
Edited by slicer4ever
0

Share this post


Link to post
Share on other sites

I am a little rusty on the VB so I will just pseudo code.

 

  Variable = Keypressed

   If ASC(Variable) => 32 and ASC(Variable) =<57 then string = string + Variable

 

  Be sure though to check for other keys as well, such as "ENTER" - "BACKSPACE" - "DELETE"

0

Share this post


Link to post
Share on other sites

Ya, I don't have any indication of what keys have changed, and IsNewKeyPress is implemented as checking the current and previous state to see if it was up and is now down. I don't think I can rely on the ascii table for all my keyboard buttons, but I guess I could replace the letters with a loop and then convert to upper case if shift is pressed. The other issue is that Keys is defined as an Enum of all the keyboard buttons.

 

I should also clarify that I am using c# and XNA. The keyboard state is coming from XNA.

0

Share this post


Link to post
Share on other sites

if the Enum is numerically in order, you can typedef the integer i to the Keys Enum.

Edited by slicer4ever
0

Share this post


Link to post
Share on other sites

XNA generally does not have the best design to get keyboard input if you need to buffer a lot of key presses for typing longer strings. This article explains why. It gives you a better alternative that doesn't use long if statements, Dictionaries or Enum assignments.


The sample code is actually pretty simple. It basically looks for Windows message codes related to key presses.

0

Share this post


Link to post
Share on other sites

If you are going to use ASCII for letter checking, VB should catch that and automatically switch to upper case.

 

Write a simple test program to verify.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0