It's first acticle about android "hangman" game development.
Target of this game is finding the word via guessing letters. If there is letter on the word then we can see all positions of this letter on the word. For example, the word is "knee". In gamestart all letters are unknown. If we pick "e", we see "??ee".
We have 10 lives in gamestart. If picked letter is wrong (it there is not in the word), we lose one life. It's game over, if there are not lives. We have won, if have picked all letters in the word.
Best way for this game developing is creating custom component, which will render game objects on one's canvas in onDraw() method. Its name is LetterField, according class is LetterField.java
So, game will include 2 classes : WordGameActivity and LetterField.
In first, we must do this actions in LetterField class:
-determine LetterField as as class View extension
-create constructor
-create onMeasure() method
-make OnDraw() method - it's method for game objects rendering
Determine width and height fields of LetterField (it's width and height of gamefield). Also, we must detemine field context as Context -for toast showing about win and fail in game.
Class constructor will load width, height and context:
onDraw() method first line must be superclass method call - super.onDraw(canvas);
Argument of onDraw() is canvas - for rendering. We will call function like this: canvas.drawLine(), canvas.drawText()
So, full source of class at this moment is:
Next step is putting component on the screen. Main activity code is:
Next part
Download source of game
Target of this game is finding the word via guessing letters. If there is letter on the word then we can see all positions of this letter on the word. For example, the word is "knee". In gamestart all letters are unknown. If we pick "e", we see "??ee".
We have 10 lives in gamestart. If picked letter is wrong (it there is not in the word), we lose one life. It's game over, if there are not lives. We have won, if have picked all letters in the word.
Best way for this game developing is creating custom component, which will render game objects on one's canvas in onDraw() method. Its name is LetterField, according class is LetterField.java
So, game will include 2 classes : WordGameActivity and LetterField.
In first, we must do this actions in LetterField class:
-determine LetterField as as class View extension
-create constructor
-create onMeasure() method
-make OnDraw() method - it's method for game objects rendering
Determine width and height fields of LetterField (it's width and height of gamefield). Also, we must detemine field context as Context -for toast showing about win and fail in game.
Class constructor will load width, height and context:
public LetterField(Context _context, double _width, double _height) { super(_context); width=_width; height=_height; context=_context; }OnMeasure() method is (it's determines sizes of component in activity):
@Override protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension((int)width, (int)height); }
onDraw() method first line must be superclass method call - super.onDraw(canvas);
Argument of onDraw() is canvas - for rendering. We will call function like this: canvas.drawLine(), canvas.drawText()
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); }
So, full source of class at this moment is:
public class LetterField extends View { double width; double height; Context context; public LetterField(Context _context, double _width, double _height) { super(_context); width=_width; height=_height; context=_context; } @Override protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension((int)width, (int)height); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } }
Next step is putting component on the screen. Main activity code is:
public class WordGameActivity extends Activity { //Fields determining. width and height will be width and height of the device screen private LetterField field; private AbsoluteLayout Abs; double width; double height; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //we will to unvisible top panel for usability requestWindowFeature(Window.FEATURE_NO_TITLE); //create new ablosuteLayout (we can out components on this in coordinate position) Abs=new AbsoluteLayout(this); setContentView(Abs); //Display parameters getting Display display = getWindowManager().getDefaultDisplay(); width=display.getWidth(); height=display.getHeight(); field=new LetterField(this, (float)width, (float)(height));//call of constructor AbsoluteLayout.LayoutParams params=new AbsoluteLayout.LayoutParams(//we must determine position and sizes of the custom component. First parameters if width and height, second parameters if X and Y of top-left angle (int)width,(int)(height),0,0 ); field.setLayoutParams(params);//including parameters to field field.setBackgroundColor(0xBBFFFFFF);//field coloring. //0x-hex system, BB - 187 - of alpha, FF - 255 - of red, FF- 255 - of green, FF- 255 - of blue Abs.addView(field); } }We are seeing the silver rectangle on the emulator.
Next part
Download source of game
Комментариев нет:
Отправить комментарий