ゲームを作ろうと思っているので、自分も手伝いたいので、ユーザーファイルを作成するファイルを作りました。ログイン名、表示名、およびパスワードを書き込むログインがあります。ログイン名にちなんで名付けられたファイルに書き込みます。
今度は、Java を使用してログイン スクリプトも作成したいと思います。具体的には、行の読み方と入力済みのパスワードを知りたいです。
ファイルを作成するときに、パスワードを「playerPass」として1回、「currPass」として2回保存するようにしています。これにより、パスワードを変更する予定がある場合(ログインスクリプトから使用します)、 currPass は、playerPass 変数を使用して正しいパスワードとして読み取られます。とにかく、BufferedReader と FileReader を使用して、パスワードと現在のパスワードを示す行を読み取って、ログインできるようにしたいと思います。
誰かがこれで私を大いに助けてくれますか? 私はまだ、ある程度初心者です。
PS。コードを微調整できます。コードの書き方について少し説明が必要です笑。
変数:
playerLogName
playerName
playerPass
currPass
ファイル名:
Login.java
CharacterFileCreator.java
追加を行い、半分は機能しましたが、パスワードを入力した後、間違っているか正しいかに関係なく、(Dr. Java を使用して) ロックされ、System.out.println() は実行されません。間違っています。それを確認してください:
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;
class Login {
public static void LogIn(){
boolean loggedIn = false;
loggedIn = true;
System.out.println("You are now logged in!");
}
public static void main(String[] args) {
System.out.println("What is your login name?");
Scanner charLogName = new Scanner(System.in);
String playerLogName = charLogName.nextLine();
boolean charFileFound = false;
BufferedReader characterfile = null;
try {
characterfile = new BufferedReader(new FileReader("./game/characters/" + playerLogName + ".txt"));
charFileFound = true;
}
catch (FileNotFoundException fileex1) {}
if(charFileFound == false){
System.out.println("Login name does not exist!");
}
else
{
System.out.println(playerLogName + ": is your username, what is your password?");
Scanner charPassword = new Scanner(System.in);
String playerPass = charPassword.nextLine();
String line = "";
String token = "";
String token2 = "";
int ReadMode = 0;
try {
line = characterfile.readLine();
} catch (IOException ioexception) {
System.out.println(playerLogName + ": error loading file.");
}
while (line != null) {
line = line.trim();
int spot = line.indexOf("=");
if (spot > -1) {
token = line.substring(0, spot);
token = token.trim();
token2 = line.substring(spot + 1);
token2 = token2.trim();
switch (ReadMode) {
case 1:
if (token.equals("character-password")) {
if (playerPass.equals(token2)) {
LogIn();
} else {
System.out.println("You entered an incorrect password!");
}
break;
}
}
} else {
if(line.equals("[ACCOUNT]")) {
ReadMode = 1;
}
else if(line.equals("[EOF]")) {
try {
characterfile.close();
} catch (IOException ioexception) {
}
}
}
}
}
}
}
編集:
サンプルファイル:
[ACCOUNT]
character-loginname = SampleFile
character-password = samplepassword
[EOF]