【问题标题】:Method: "getMap" and "map" doesn't work方法:“getMap”和“map”不起作用
【发布时间】:2017-06-09 03:58:00
【问题描述】:

我是一个非常初学者的程序员,所以我遵循了一个 youtube 教程,该教程向我展示了如何构建一个简单的蛇应用程序。 youtube-tutorial 上的人得到的AndroidStudio 比我的旧版本。他使用AndroidStudio 2.1.2 版,我使用AndroidStudio 2.2.2 版和java 语言。

我的问题是他使用命令getMapmap 并且有效。当我这样做时它不起作用。我的客人是我必须在>方法“getMap”和“map”中替换的

我关注的 youtube 教程:https://www.youtube.com/watch?v=bPlG7ra83lo 12:00 他第一次使用这个命令。

游戏引擎

package pelgrom.laurens.snake101.engine;

import android.service.quicksettings.Tile;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import pelgrom.laurens.snake101.Classes.Coordinate;
import pelgrom.laurens.snake101.enums.TileType;

/**
 * Created by Laptop on 23-1-2017.
 */

public class GameEngine {
    public static final int GameWidth = 28;
    public static final int Gameheight = 42;

    private List<Coordinate> walls = new ArrayList<>();


    public GameEngine() {

    }

    public void initGame(){

        AddWalls();

    }

    public TileType()() getMap() {
        TileType()() map = new TileType(GameWidth) (Gameheight);

        for (int x = 0; x < GameWidth; x++) {
            for (int y = 0; y < Gameheight; y++) {
                map(X)(Y) = TileType.Nothing;
            }
        }

        for (Coordinate wall: walls) {
            map(wall.getX())(wall.getY()) = TileType.Wall;
        }

        return map;


    }
           //fout zit hem in de "map" en de  "getMap"




    private void AddWalls() {
        //Top and bottom walls
        for (int x = 0; x < GameWidth; x ++) {
            walls.add(new Coordinate(x,0));
            walls.add(new Coordinate(x,Gameheight-1));
        }

        //Left and Right walls
        for (int y = 1; y < Gameheight; y++){
            walls.add(new Coordinate(0,y));
            walls.add (new Coordinate(GameWidth -1 , y));

        }

    }
}
`

蛇视图

`package pelgrom.laurens.snake101.views;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

import pelgrom.laurens.snake101.enums.TileType;

/**
 * Created by Laptop on 23-1-2017.
 */

public class SnakeView extends View {
    private Paint mPaint = new Paint();
    private TileType snakeViewMap()();

    public SnakeView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void setSnakeViewMap(TileType()() map )( this.snakeViewMap = map; )

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if( snakeViewMap != null ){
            float tileSizeX = canvas.getWidth() / snakeViewMap.length;
            float tileSizeY = canvas.getHeight() / snakeViewMap.length;

            float circleSize = Math.min(tileSizeX, tileSizeY) / 2;

            for (int x = 0; x < snakeViewMap.lenght; x++) {
                for (int y = 0; y < snakeViewMap(x). lenght; y++) {
                    switch (snakeViewMap(x)) {

                        case Nothing:
                            mPaint.setColor(Color.WHITE);
                            break;
                        case Wall:
                            mPaint.setColor(Color.GREEN);
                            break;
                        case SnakeHead:
                            mPaint.setColor(Color.RED);
                            break;
                        case SnakeTail:
                            mPaint.setColor(Color.GREEN);
                            break;
                        case Apple:
                            mPaint.setColor(Color.RED);
                            break;

                    }

                    canvas.drawCircle(x * tileSizeX + tileSizeX / 2f + circleSize / 2, y * tileSizeY + tileSizeY / 2f + circleSize / 2, circleSize, mPaint);
                }
            }
        }
    }
 }
`

主要活动

`package pelgrom.laurens.snake101;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import pelgrom.laurens.snake101.engine.GameEngine;
import pelgrom.laurens.snake101.views.SnakeView;

public class Activity extends AppCompatActivity {

    private GameEngine gameEngine;
    private SnakeView snakeView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);

        gameEngine = new GameEngine();
        gameEngine.initGame();

        snakeView = (SnakeView)findViewById(R.id.snakeView);
        snakeView.setSnakeViewMap(gameEngine.getMapAsync());
        snakeView.invalidate();
    }
}
`

【问题讨论】:

  • 贴出你有的任何代码
  • 抱歉链接,链接是youtube.com/watch?v=bPlG7ra83lo
  • 是的,嗯,我不知道如何发布代码。当你给你的电子邮件时,我会发送给你
  • 只需编辑您的问题并复制粘贴您在 android studio 中编写的代码。简单

标签: java android android-studio youtube android-studio-2.2


【解决方案1】:

您的代码的问题是您使用的是圆括号(),而它必须使用方括号[],因为您要声明二维数组。像这样替换它们:

public TileType[][] getMap() {
    TileType[][] map = new TileType[GameWidth][Gameheight];

    for (int x = 0; x < GameWidth; x++) {
        for (int y = 0; y < Gameheight; y++) {
            map[x][y] = TileType.Nothing;
        }
    }

    for (Coordinate wall: walls) {
        map[wall.getX()][wall.getY()] = TileType.Wall;
    }

    return map;


 }

PS:你真的需要从基础开始。

【讨论】:

  • public void setSnakeViewMap( TileType[][] map )[ this.snakeViewMap = map; ] 我的代码中的所有内容都有效,除了这个公共无效
  • 您也必须将private TileType snakeViewMap()(); 替换为private TileType snakeViewMap[][];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多