yoavsr

עמוד

התגובות שלי בפורום

מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
  • מאת
    תגובות
  • בתגובה ל: להגיע ל-100 #83329
    yoavsr
    משתתף

    הפתרון

    http://pastebin.com/sEys3Pxn

    קוד קצר ב-Kotlin שמוצא פתרון ללא שימוש בסוגרים (שימוש בסוגרים יהיה יותר מורכב). לא אפרסם את הפתרונות כדי לא לעשות ספויילרים 🙂

    הערה: בשביל להמיר טקסט לתרגיל ואז למספר, אני משתמש בספרייה https://github.com/uklimaschewski/EvalEx , אבל אפשר להשתמש בכל מנוע אחר כמובן.

    • התגובה הזו עודכנה לפני לפני 8 שנים, 5 חודשים ע"י yoavsr.
    בתגובה ל: הבהרות לגבי מנוע המשחק החדש #83280
    yoavsr
    משתתף

    בגרסה החדשה לא נערך שינוי בפונקציונליות של המנוע עצמו, ככה שכל מה שהיה נכון לשנה שעברה נכון גם השנה.

    הדבר היחיד ששונה הוא מה נעשה עם התוצאות של ההרצה.

    אני מצרף לדוגמה הרצה של שלב הבתים: https://github.com/yoavst/corewars8086/blob/master/src/main/java/il/co/codeguru/corewars8086/runner/GroupsRunner.kt

    בתגובה ל: קימפול קוד המקור של המנוע #83268
    yoavsr
    משתתף

    מערכת הבנייה היא maven.

    בתגובה ל: ריצת קודגורו אקסטרים 10 #83144
    yoavsr
    משתתף

    אנחנו (NightMare) כולנו מכיתה י' ואין כוכבית ליד השם שלנו.
    בנוסף גם קבוצת NOVA כולה מכיתה י'.

    • התגובה הזו עודכנה לפני לפני 9 שנים, 9 חודשים ע"י yoavsr.
    בתגובה ל: אוטומציה של תהליך הבנייה וההרצה #83117
    yoavsr
    משתתף

    אתה יכול להשתמש בסקריפט הזה בשביל בנייה אוטומטית
    https://gist.github.com/yoavst/68e4042aba897604af50

    package com.yoavst.autocompile;
     
    import javax.swing.*;
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    import java.util.ArrayList;
     
    public class AutoCompile {
        public static boolean USE_DOSBOX = System.getProperty("sun.arch.data.model").contains("64");
        public static void main(String[] args) throws IOException {
            File[] warriorFiles = new File("work").listFiles();
            assert warriorFiles != null;
            ArrayList<File> files = new ArrayList<File>(warriorFiles.length);
            for (File file : warriorFiles) {
                if (getFileExtension(file).equalsIgnoreCase(".asm")) {
                    files.add(file);
                }
            }
            if (files.size() > 0) {
                // User need to have dosbox in path
                String currentPath = new File(".").getAbsolutePath();
                for (File asm : files) {
                    String name = stripExtension(asm.getName());
                    // FIXME use USE_DOSBOX
                    Process command = Runtime.getRuntime().exec("dosbox -noconsole " +
                            "-c \"mount g: " + currentPath + "\" " +
                            "-c \"g:\" " +
                            "-c \"copy work\\" + name + ".asm asm\\" + name + ".asm\" " +
                            "-c \"cd asm\" " +
                            "-c \"tasm -zi " + name + ".asm\" " +
                            "-c \"tlink /t " + name + ".obj\" " +
                            "-c \"del " + name + ".obj\" " +
                            "-c \"del " + name + ".map\" " +
                            "-c \"del " + name + ".asm\" " +
                            "-c \"exit\"\n");
                    try {
                        command.waitFor();
                    } catch (InterruptedException e) {
                        JOptionPane.showMessageDialog(null,
                                "Error - cant compile asm file " + asm.getName());
                        System.exit(1);
                    }
                    File compiledFile = new File("asm", name + ".com");
                    if (!compiledFile.exists()) {
                        JOptionPane.showMessageDialog(null,
                                "Error - cant compile asm file " + asm.getName());
                        System.exit(1);
                    } else {
                        Files.move(Paths.get(compiledFile.getAbsolutePath()), Paths.get(new File("survivors", name).getAbsolutePath()), StandardCopyOption.REPLACE_EXISTING);
                    }
                }
            }
        }
     
        public static String getFileExtension(File file) {
            String name = file.getName();
            int lastIndexOf = name.lastIndexOf(".");
            if (lastIndexOf == -1) {
                return ""; // empty extension
            }
            return name.substring(lastIndexOf);
        }
     
        public static String stripExtension(String str) {
            // Handle null case specially.
            if (str == null) return null;
            // Get position of last '.'.
            int pos = str.lastIndexOf(".");
            // If there wasn't any '.' just return the string as is.
            if (pos == -1) return str;
            // Otherwise return the string, up to the dot.
            return str.substring(0, pos);
        }
    }
    

    אתה צריך לקמפל, ולהוסיף את ההרצה של ה-class לbat שפותח את התוכנה.
    בעיקרון זה לכל קובץ בתקיית work פותח dosbox ומקמפל אותו באמצעות tasm (אצלי זה פשוט 64 ביט, אז אני חייב DOSBOX).
    כדי שזה יעבוד:
    צריך תקיית WORK שבא כל קבצי ה-ASM
    צריך תקיית ASM שבא TASM של 16ביט נמצא
    כמובן שאתה יכול לשנות את הפקודה ולהשתמש במה שאתה רוצה.

מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)