LoginSignup
kiri___
@kiri___

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

クラス構造を用いて座標を移動させるプログラムを作りたい

解決したいこと

基本情報技術者試験の勉強をしています。
オブジェクト指向について、学んでいます。

アルゴリズムの章なので、例題にある疑似言語で書かれたプログラムを実際に書いて勉強しています。
今書きたいプログラムが、
「クラスCharactorで生成したlancerを(x座標、y座標)を標準入力で一文字空けて「5 6」のように任意の値を入力し、その後「x方向に⁺1、y方向に⁺1した位置に移動」させ、移動後の値を出力する」プログラムを書きたいです。

自分が書いたプログラムは、エラーが出ないのですが、問題の意図を半分ほどしか取り入れていないのと、出力が上手くいかないので、有識者の方のお力添えを願えればと思います。

lancer.move_x(1)
lancer.move_y(1)
の様な形で、移動もクラス構造を用いた関数で書きたいです。
書いていただきたい言語はPythonです。

発生している問題・エラー

エラーメッセージはありません。

該当するソースコード

class Charactor:
  def __init__(self):
      self.x, self.y = map(int,input().split())
    
  def lancer(self):
      self.x += 1
      self.y += 1

自分で試したこと
出力や他のコードも組んでみましたが、なかなか上手くいかず、質問させていただきました。

0

2Answer

こんな感じですかね

class Charactor:
    def __init__(self, x, y):
        self.x, self.y = x, y

    def move_x(self, distance):
        self.x += distance

    def move_y(self, distance):
        self.y += distance
    
    def print_position(self):
        print('x:', self.x, 'y:', self.y)

_x, _y = map(int, input().split())

lancer = Charactor(_x, _y)

lancer.print_position()
lancer.move_x(1)
lancer.print_position()
lancer.move_y(1)
lancer.print_position()

1Like

Comments

  1. @kiri___

    Questioner

    ありがとうございます。

class Character:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def move(self, dx, dy):
        self.x += dx
        self.y += dy

# 標準入力から座標を取得
input_coords = input("座標を入力してください(例: 5 6): ").split()
initial_x, initial_y = map(int, input_coords)

# Characterクラスのインスタンスを生成
lancer = Character(initial_x, initial_y)

# 移動
lancer.move(1, 1)

# 移動後の座標を出力
print(f"移動後の座標: {lancer.x} {lancer.y}")

これでどうですか?

0Like

Your answer might help someone💌