Professional Documents
Culture Documents
AndroidForTeensProgram Vers5
AndroidForTeensProgram Vers5
4 Обертовий рух.
int angle = 0;
canvas.drawColor(Color.YELLOW);
canvas.drawPath(path, p);
angle = angle - 1;
invalidate();
}
}
Домашнє завдання.
1.Написати код для затухаючого руху математичного маятника.
2.Написати код для простого руху вправо автомобіля з однією лінією на колесах.
Тема 7. FlappyBirds_Intro.
Відео: FlappyBirds1, FlappyBirds2.
Коди з відео:
/////////////////////// CODES 1 //////////////////////////////
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void startGame(View view){
Intent intent = new Intent(this, StartGameActivity.class);
startActivity(intent);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/nightbackground"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/play"
android:onClick="startGame"/>
</androidx.constraintlayout.widget.ConstraintLayout>
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.View;
R.drawable.daybackground);
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, 0, 0, null);
}
}
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GameView(this));
}
}
/////////////////////// CODE 2 //////////////////
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.View;
R.drawable.daybackground);
createDisplay();
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, null, rectangle, null);
}
public void createDisplay(){
Display display = ((Activity)getContext()).getWindowManager().
getDefaultDisplay();
Point point = new Point();
display.getSize(point);
rectHeight = point.y;
rectWidth = point.x;
rectangle = new Rect(0, 0, rectWidth, rectHeight);
}
}
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.View;
Bitmap background;
Rect rectangle;
int rectHeight, rectWidth;
Bitmap[] birds = new Bitmap[3];
int birdsX, birdsY;
GameView(Context context){
super(context);
createDisplay();
background = BitmapFactory.decodeResource(getResources(),
R.drawable.daybackground);
birds[0] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingup);
birds[1] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingdown);
birdsX = rectWidth / 2;
birdsY = rectHeight / 2;
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, null, rectangle, null);
canvas.drawBitmap(birds[0], birdsX, birdsY, null);
}
public void createDisplay(){
Display display = ((Activity)getContext()).getWindowManager().
getDefaultDisplay();
Point point = new Point();
display.getSize(point);
rectHeight = point.y;
rectWidth = point.x;
rectangle = new Rect(0, 0, rectWidth, rectHeight);
}
}
Домашнє завдання. Додати код для реалізації руху крил пташки спочатку на 2
позиції - догори та донизу, потім - на 4 позиції - посередині, догори, посередині та
донизу.
Тема 8. FlappyBirds_Animation.
Відео: FlappyBirds3.
Код з відео:
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
GameView(Context context){
super(context);
createDisplay();
background = BitmapFactory.decodeResource(getResources(),
R.drawable.daybackground);
birds[0] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingup);
birds[1] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingmiddle);
birds[2] = BitmapFactory.decodeResource(getResources(),
R.drawable.birdwingdown);
tubeTop = BitmapFactory.decodeResource(getResources(),
R.drawable.tubetop);
tubeBottom = BitmapFactory.decodeResource(getResources(),
R.drawable.tubebottom);
birdX = rectWidth / 2;
birdY = rectHeight / 2;
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(background, null, rectangle, null);
canvas.drawBitmap(birds[nowBird], birdX, birdY, null);
canvas.drawBitmap(tubeTop, tubesX, tubeTopY, null);
canvas.drawBitmap(tubeBottom, tubesX, tubeBottomY, null);
velocity += gravity;
if(toUp){
if(nowBird == 2){
toUp = false;
nowBird = 1;
}else{
nowBird++;
}
}else{
if(nowBird == 0){
toUp = true;
nowBird = 1;
}else{
nowBird--;
}
}
if(birdY < 0){
birdY = 0;
}else{
if(birdY >= rectHeight - 250){
birdY = rectHeight - 250;
}else{
birdY += velocity;
}
}
// try {
// Thread.sleep(1000);
// }catch(Exception e){}
invalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN){
birdY -= 200;
velocity = 2;
}
return true;
}
public void createDisplay(){
Display display = ((Activity)getContext()).getWindowManager().
getDefaultDisplay();
Point point = new Point();
display.getSize(point);
rectHeight = point.y;
rectWidth = point.x;
rectangle = new Rect(0, 0, rectWidth, rectHeight);
}
}
Домашнє завдання. Додати код для нескінченного руху масиву пар колон з
випадковими значеннями початку верхньої та нижньої колон по вертикалі: