24 / 24 / 0
Регистрация: 24.01.2018
Сообщений: 54
1

Земля и Диггер

28.12.2018, 20:01. Показов 10614. Ответов 7

Всем здравствуйте! Не могу определить в чём ошибка.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Digger
{
    //Напишите здесь классы Player, Terrain и другие.
    public class Player : ICreature
    {
        public CreatureCommand Act(int x, int y)
        {
            var igr = new CreatureCommand();
            var key = Game.KeyPressed;
            
            if (key == Keys.Right && x + 1 < Game.MapWidth)
            {
                igr.DeltaX = 1;
            }
            else if (key == Keys.Left && x - 1 >= 0)
            {
                igr.DeltaX = -1;
            }
            else if (key == Keys.Up && y - 1 >= 0)
            {
                igr.DeltaY = -1;
            }
            else if (key == Keys.Down && y + 1 < Game.MapHeight)
            {
                igr.DeltaY = 1;
            }
            return igr;
        }
        public string GetImageFileName()
        {
            return "Digger.png";
        }
        public int GetDrawingPriority()
        {
            return 1;
        }
        public bool DeadInConflict(ICreature conflictedObject)
        {
            return false;
        }
    }
    public class Terrain : ICreature
    {
        public string GetImageFileName()
        {
            return "Terrain.png";
        }
        public int GetDrawingPriority()
        {
            return 0;
        }
        public bool DeadInConflict(ICreature conflictedObject)
        {
            return true;
        }
        public CreatureCommand Act(int x, int y)
        {
            return new CreatureCommand();
        }
    }
}
Ошибка в объявлении клавиши. Спасите!
DiggerTask.cs(17,24): error CS0103: The name 'Keys' does not exist in the current context

DiggerTask.cs(21,29): error CS0103: The name 'Keys' does not exist in the current context

DiggerTask.cs(25,29): error CS0103: The name 'Keys' does not exist in the current context

DiggerTask.cs(29,29): error CS0103: The name 'Keys' does not exist in the current context
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2018, 20:01
Ответы с готовыми решениями:

Модель полета ракеты класса Земля-земля
Нужно создать математическую модель полета ракеты на MathCad. Условия задачи: начальная масса...

Земля
Привет всем. Собираю приблуду на Atmega8. Что она делает и как работает описывать пока не буду -...

Питание и земля
У меня есть плата, на которой есть несколько различных по напряжению разъёмов под питание (12V, 5V,...

Общая земля
В чём могут быть подводные камни объединения земли разных источников? К примеру ситуация: схема...

7
Модератор
Эксперт .NET
13262 / 9554 / 2564
Регистрация: 21.04.2018
Сообщений: 28,197
Записей в блоге: 2
28.12.2018, 20:06 2
Лучший ответ Сообщение было отмечено denkipo как решение

Решение

Цитата Сообщение от denkipo Посмотреть сообщение
Ошибка в объявлении клавиши. Спасите!
DiggerTask.cs(17,24): error CS0103: The name 'Keys' does not exist in the current context
Пишит что у Вас не объявлена переменная Keys. Что это за переменная? Если системная - может нужного юсинга нет.
1
24 / 24 / 0
Регистрация: 24.01.2018
Сообщений: 54
28.12.2018, 20:10  [ТС] 3
Это переменная, которая есть в классе Game.
Попробовал изменить, что обозначает эта ошибка? DiggerTask.cs(17,24): error CS0176: Member 'Keys.Right' cannot be accessed with an instance reference; qualify it with a type name instead
0
Модератор
Эксперт .NET
13262 / 9554 / 2564
Регистрация: 21.04.2018
Сообщений: 28,197
Записей в блоге: 2
28.12.2018, 20:13 4
Я же написал Вам уже - переменная не объявлена!
Вы же находитесь в классе Player, как Вы можете ссылаться на переменную класса Game.
И что это точно: поле, свойство, перечисление, статическое, динамическое?
0
24 / 24 / 0
Регистрация: 24.01.2018
Сообщений: 54
28.12.2018, 20:14  [ТС] 5
Решил, добавил библиотеку. Итоговый вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Digger
{
    //Напишите здесь классы Player, Terrain и другие.
    public class Player : ICreature
    {
        public CreatureCommand Act(int x, int y)
        {
            var igr = new CreatureCommand();
            var key = Game.KeyPressed;
            
            if (key == Keys.Right && x + 1 < Game.MapWidth)
            {
                igr.DeltaX = 1;
            }
            else if (key == Keys.Left && x - 1 >= 0)
            {
                igr.DeltaX = -1;
            }
            else if (key == Keys.Up && y - 1 >= 0)
            {
                igr.DeltaY = -1;
            }
            else if (key == Keys.Down && y + 1 < Game.MapHeight)
            {
                igr.DeltaY = 1;
            }
            return igr;
        }
        public string GetImageFileName()
        {
            return "Digger.png";
        }
        public int GetDrawingPriority()
        {
            return 1;
        }
        public bool DeadInConflict(ICreature conflictedObject)
        {
            return false;
        }
    }
    public class Terrain : ICreature
    {
        public string GetImageFileName()
        {
            return "Terrain.png";
        }
        public int GetDrawingPriority()
        {
            return 0;
        }
        public bool DeadInConflict(ICreature conflictedObject)
        {
            return true;
        }
        public CreatureCommand Act(int x, int y)
        {
            return new CreatureCommand();
        }
    }
}
0
Модератор
Эксперт .NET
13262 / 9554 / 2564
Регистрация: 21.04.2018
Сообщений: 28,197
Записей в блоге: 2
28.12.2018, 20:19 6
Цитата Сообщение от denkipo Посмотреть сообщение
Решил, добавил библиотеку. Итоговый вариант:
Ну, так даже не класса Game. Это системное перечисление из пространства System.Windows.Forms
Удачи!
0
HF
923 / 600 / 150
Регистрация: 09.09.2011
Сообщений: 1,879
Записей в блоге: 2
29.12.2018, 09:10 7
Цитата Сообщение от denkipo Посмотреть сообщение
var key = Game.KeyPressed;
Это ошибка.

В классе Game уже находится нужное свойство:
Код
public static Keys KeyPressed;
Всё что нужно делать - обращаться к нему. В ошибке же сказано
"cannot be accessed with an instance reference; qualify it with a type name instead" - это статическое своейство и к нему так как вы делаете не нужно общаться.

Поэтому всё что нужно исправить (и другие аналогичные строки):
C#
1
if (key == Keys.Right && x + 1 < Game.MapWidth)
переписать в
C#
1
if (Game.KeyPressed == Keys.Right && x + 1 < Game.MapWidth)
1
Модератор
Эксперт .NET
13262 / 9554 / 2564
Регистрация: 21.04.2018
Сообщений: 28,197
Записей в блоге: 2
29.12.2018, 10:20 8
Цитата Сообщение от HF Посмотреть сообщение
Всё что нужно делать - обращаться к нему. В ошибке же сказано
"cannot be accessed with an instance reference; qualify it with a type name instead" - это статическое своейство и к нему так как вы делаете не нужно общаться.
Вы не внимательно прочли текст ошибки и код. Ошибка возникала не из-за переменной "key" - она объявлена здесь же и проблем с ней нет. А из-за перечисления "Keys". Как оказалось, это перечисление дефолтное из пространства System.Windows.Forms. И указав, соответствующий, юсинг - проблему ТС решил.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2018, 10:20
Помогаю со студенческими работами здесь

Земля по периметру платы
Заранее хочу предостеречь от флуда. Интересуют только технические данные за и против. Я постоянно...

Виртуальная земля для ОУ
Привет. Друг попросил сделать ему в автонигнитолу линейный выход. По умолчанию там есть только 4...

Земля и ее точки Лагранжа
Вообще говоря у планеты Земля (как впрочем и у любой планеты) есть 5 точек Лагранжа. Но особый...

Зачем инопланетянам Земля?
Они есть и их много. В чем дело?? Полет человека на Луну обошелся Америке (программа Аполлон) в 25...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru