import java.io.*; public class InitDeck { static String infile = "cards.inp"; static String outfile = "cards.pck"; static Dk_st[] deck = new Dk_st[2]; static DataObjectInputStream inf; static DataObjectOutputStream outf; static { for (int i = 0;i < 2;i++) { deck[i] = new Dk_st(); } } public static void main(String[] args) { String[] argv = new String[args.length + 1]; argv[0] = "InitDeck"; for (int i = 1;i < args.length;i++) { argv[i] = args[i - 1]; } InitDeck instance = new InitDeck(); System.exit(instance.main(argv.length, argv)); } int main(int ac, String[] av) { getargs(ac, av); try { try { inf = new DataObjectInputStream(new FileInputStream(infile)); } catch (FileNotFoundException e) { System.err.println("FileNotFoundException:" + e); } } catch (Exception e) { System.err.println(infile); System.exit(1); } count(); deck[0].offsets = new long[deck[0].num_cards + 1]; deck[1].offsets = new long[deck[1].num_cards + 1]; try { inf.rewind(); try { try { outf = new DataObjectOutputStream(new FileOutputStream(outfile)); } catch (FileNotFoundException e) { System.err.println("FileNotFoundException:" + e); } } catch (Exception e) { System.err.println(outfile); System.exit(0); } outf.writeArray(deck, 2); outf.writeArray(deck[0].offsets, deck[0].num_cards); outf.writeArray(deck[1].offsets, deck[1].num_cards); putem(); inf.close(); outf.rewind(); outf.writeArray(deck, 2); outf.writeArray(deck[0].offsets, deck[0].num_cards); outf.writeArray(deck[1].offsets, deck[1].num_cards); outf.close(); } catch (IOException e) { System.err.println("IO Exception:" + e); } System.out.println("There were " + (deck[0].num_cards) + " com. chest and " + (deck[1].num_cards) + " chance cards"); return 0; } void getargs(int ac, String[] av) { if (ac > 1) { infile = av[1]; } if (ac > 2) { outfile = av[2]; } } void count() { boolean newline = false; Dk_st in_deck = null; char c = '\u0000'; newline = true; in_deck = deck[0]; try { while ((c = (char) inf.read()) != (char) - 1) { if (newline && c == '%') { newline = false; in_deck.num_cards++; if ((char) inf.read() == '-') { in_deck = deck[1]; } } else { newline = (c == '\n'); } } in_deck.num_cards++; } catch (IOException e) { System.err.println("IO Exception:" + e); } } void putem() { boolean newline = false; Dk_st in_deck = null; char c = '\u0000'; int num = 0; in_deck = deck[0]; deck[0].num_cards = 1; deck[1].num_cards = 0; deck[0].offsets[0] = outf.size(); try { outf.write((char) inf.read()); outf.write((char) inf.read()); num = inf.readIntChars(); outf.writeIntChars(num); newline = false; while ((c = (char) inf.read()) != (char) - 1) { if (newline && c == '%') { outf.write('\0'); newline = false; if ((char) inf.read() == '-') { in_deck = deck[1]; } while ((char) inf.read() != '\n') { continue; } in_deck.offsets[in_deck.num_cards++] = outf.size(); c = (char) inf.read(); if (c == (char) - 1) { break; } outf.write(c); outf.write(c = (char) inf.read()); num = inf.readIntChars(); outf.writeIntChars(num); } else { outf.write(c); newline = (c == '\n'); } } outf.write('\0'); } catch (IOException e) { System.err.println("IO Exception:" + e); } } }